iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

0
Software Development

安全軟體開發生命週期(SSDLC)學習筆記系列 第 33

HTTP標頭開發方法

用於檢查網站的當前標頭。
標頭按重要性順序列出,但是請注意,除非從頭開始設計應用程式,否則很難實施適當的安全內容安全策略。
嘗試使用標頭獲得一些快速優勢:
http-strict-transport-security
X-Frame-Options
X-XSS-Protection
X-Content-Type-Options

https://observatory.mozilla.org

建議
  • http-strict-transport-security
    從現在起,嚴格的傳輸安全標頭告訴瀏覽器通過加密連接載入網站。
    這有助於避免所謂的SSL分離攻擊,即處於中間人位置的攻擊者將用戶降級為不安全的連接。

    • 初始設定:
      告訴瀏覽器記住使用HTTPS一天。
      注意在"最大使用期限"的持續時間內,您無法切換回HTTP。
      建議由較低的測試值開始,並在確信應用程式按預期工作後將其增加。
        http-strict-transport-security:max-age = 86400
        ```	
      
    • 最終設定:
      建議將最大年齡限制為至少6個月(max-age = 15768000)
      理想數值是2年(max-age = 63072000)。
        http-strict-transport-security:max-age = 63072000
        ```	
      
  • 內容安全政策(CSP)
    該標頭旨在減少甚至消除XSS(跨站腳本攻擊)的影響。
    它可以用來告訴瀏覽器網站應該從何處載入資源。
    可以在這裡找到一個很好的工具來生成策略並獲得所有指令的說明:
    https://report-uri.io/home/generate

    引用Mozilla:
    CSP的主要為禁用不安全的JavaScript嵌入式寫法。
    行內(inline)JavaScript若包含不正確的用戶輸入,其轉義時可能會生成由Web瀏覽器解釋為JavaScript的程式碼。
    通過使用CSP禁用嵌入式JavaScript,您可以有效消除針對您站點的幾乎所有XSS攻擊。
    https://csp.withgoogle.com/

    Google已發現,大多數利用白名單的CSP​​都不會阻止XSS,因為由於白名單網域域(例如google.com)上存在可濫用的端點,它們可以被繞開。
    因此推薦的方法不再是白名單,而是使用雜湊或亂數。
    它要求每個''標籤都具有一個關聯的隨機生成的亂數,該亂數在服務器響應的CSP頭中設定。

      <script src =" https://www.example.com/script.js" nonce =" {{csp-nonce}}"> </ script>
    

    設定範例:
    object-src'none'; script-src'nonce- {random}''unsafe-inline''unsafe-eval''strict-dynamic'https:http :; base-uri'none'; frame-ancestors'none';
    報告模式:(Content-Security-Policy-Report-Only)
    可能需要一個報告端點,才能在'<您的域名>/csp-violation-report-endpoint'接收CSP違規報告。
    object-src'none'; script-src'nonce- {random}''unsafe-inline''unsafe-eval''strict-dynamic'https:http :; base-uri'none'; frame-ancestors'none'; report-uri/csp-violation-report-endpoint/

  • X-Frame-Options

    此標頭告訴瀏覽器其他網站是否允許構架網站。
    通過將此標頭設定:為允許的域列表,我們可以防止Clickjacking攻擊。
    https://www.owasp.org/index.php/Clickjacking

    推薦設定:
    X-Frame-Options可由"frame-ancestors"屬性代替。
    此屬性更加靈活。
    X-Frame-Options:DENY
    frame-ancestors'none';

  • X-XSS-Protection
    大多數瀏覽器中內置的跨站腳本過濾器的配置。
    https://scotthelme.co.uk/hardening-your-http-response-headers/#x-xss-protection

    推薦設定:
    X-XSS-Protection:1;模式=阻止

  • X-Content-Type-Options

    該標頭告訴瀏覽器不要猜測所提供內容的MIME(多用途Internet郵件擴展名)類型,而是信任" Content-Type"標頭。如果沒有設定:X-Content-Type-Options標頭,則某些較舊的瀏覽器可能會錯誤地將文件檢測為腳本和样式表,從而可能導致XSS攻擊。
    推薦設定::
    X-Content-Type-Options:nosniff

  • 推薦政策

    標頭基本上控制在引用標頭中發送的內容。使用此標頭的安全性在於避免了URL中傳輸的會話標識符或其他敏感信息通過引薦標頭傳遞到其他域的情況。這裡有不同的選項,範圍從不發送任何引薦標頭到僅發送域(源)。最佳設定:必須基於應用程式對Referer標頭的使用來確定。推薦的設定:"來源"僅發送域名,而不發送URL的路徑部分。之所以選擇它,是因為它在大多數瀏覽器中都受支持。

    推薦設定:
    我們可能還想執行" Referrer-Policy:strict-origin",以僅將引薦來源標頭髮送到HTTPS站點,以保護用戶的隱私,但Edge和Safari目前不支持。

  • API

    對於API(應用程式編程接口),我們要確保對流量進行加密並限制XSS漏洞的潛在影響,例如在錯誤頁面中,則由於內容安全策略不允許使用腳本或iframe,因此無法將其用於運行Javascript。請注意,對於在同一域中具有文檔的API(例如Swagger),這將無法正常工作,需要進行調整。

    推薦設定::
    內容安全策略:default-src'none';框架祖先"無"
    嚴格的運輸安全性:最大年齡= 31536000
    X-Content-Type-Options:nosniff

  • 參考資源:

    有關Mozilla關於Web應用程式安全性的更多最佳實踐和建議,請參見以下鏈接:


上一篇
密碼開發方法
下一篇
防止常見的Web攻擊開發方法
系列文
安全軟體開發生命週期(SSDLC)學習筆記36

尚未有邦友留言

立即登入留言