2015-09-29 39 views
0

我正在爲一個項目添加HSTS頭到Web應用程序。
作爲一個前期工作,我只在default-src https指令的情況下在報告模式下添加了CSP頭。目的是評估違規情況並決定添加HSTS頭是否打破任何用例。
問題:
值得比較CSP頭和HSTS頭嗎?

  1. 它是一個有價值的方法嗎?
  2. 用這種方法我們會錯過HSTS的情景是什麼?
  3. 如果推薦的方法與上面描述的不同,那麼推薦的方法是什麼?

回答

0

如果您僅在您的服務器上使用https,我會認爲這很明顯。你有https設置嗎?你有一個重定向設置爲強制全部 http請求被重定向到https?這些問題應該很容易通過查看您的服務器配置來回答,我認爲您不需要CSP來回答它們。如果兩者的答案都不是「是」,那麼你爲什麼要考慮HSTS?

CSP支持不是普遍的(雖然不是普遍的),並且,通常這些東西通常是較老的不太常見的瀏覽器,因爲你大概會測試常見的瀏覽器,所以你的方法是否會給你你需要進行的信心是值得商榷的。

您應該注意的一件事是如果您使用includeSubDomains標誌。這可能會導致問題,如果它影響更多的服務器比你打算,但CSP不會幫助,因爲你大概只會在你認爲會受到影響的服務器上設置CSP。更多的信息在這裏:https://serverfault.com/questions/665234/problems-using-hsts-header-at-top-level-domain-with-includesubdomains

另外請注意,一旦執行HSTS,證書錯誤不能在瀏覽器中被繞過。不是說你應該這樣做,而是這個標誌的另一個有意義的效果,並不是每個人都知道的。

請注意,解決HSTS問題的唯一方法(例如,如果您發現您需要http,畢竟)除了刪除標頭並等待策略過期之外,是將最大時限設置爲零,並希望人們通過https訪問您的網站以獲取此新的HSTS策略並覆蓋上一個策略。使用Chrome可以手動查看和刪除該政策,但如果您有任何訪問量,並且沒有意識到通過其他瀏覽器完成重新安裝的任何方式都無法執行此操作,那就不實用了。

最好的方法是充分了解HSTS是什麼,以及上述注意事項,然後從低到期開始,只要沒有遇到任何問題,就可以慢慢建立起來。

還有預加載列表,但我會保持遠離,直到你已經運行至少6個月沒有問題。

+0

在這種情況下,HSTS不會破壞您的網站,因爲您僅使用https(注意上面提到的任何子域的includeSubDomains問題)。但即使http鏈接也會自動重定向,因此CSP不會報告任何內容 - 除非您通過http加載第三方內容到您的站點上,這會導致您出現其他錯誤以及哪些HSTS不起作用(除了小的用例完全合格的http鏈接返回到您自己的網站)。 HSTS負責處理請求。 CSP負責在頁面上加載內容。兩個不同的用例幾乎沒有重疊。 –

+0

對這兩個問題的答案是肯定的。 讓我試着重述一下我的問題。通過應用CSP策略來評估HSTS是否好用,其中頭部如下所示: Content-Security-Policy-Report-Only:default-src https :; script-src https:'unsafe-inline''unsafe-eval'; style-src https:'unsafe-inline'; img-src https:data :; font-src https:data :; report-uri 我會研究你提到的問題 - 與證書錯誤有關。 – user20110