我有一個Rails應用程序config.force_ssl = true
,但現在我不想要SSL加密,但我的應用程序仍然重定向到https。我讀到這是Apache上的HTTP嚴格傳輸安全問題。我該如何禁用它?如何禁用HTTP嚴格傳輸安全?
回答
這不是Apache的問題,但事實上,Rails發送一個HSTS頭。
在Chrome中,您可以進入about:net-internals
來清除HSTS狀態,如ImperialViolet: HSTS UI in Chrome中所述。您也可能必須清除緩存,因爲config.force_ssl = true
也使用301(永久)重定向。
另外,根據this answer,你也可以讓你的應用程序發送一個max-age = 0的STS頭。在你的控制器:
response.headers["Strict-Transport-Security"] = 'max-age=0'
只是想指出@布魯諾的答案,並@ JoeVanDyk的建議是真實的,可以超越的Rails /阿帕奇的環境中應用。我使用PHP和Nginx。 PHP無關,它在我的情況,但這裏與Nginx的步驟:
//sorry here's the nginx.conf part first, can't figure out how to mix multi-line
//code with an ordered list
server {
#...
#change:
# add_header Strict-Transport-Security "max-age=315360000; includeSubdomains";
#to:
add_header Strict-Transport-Security "max-age=0;";
#...
}
清楚你的「瀏覽器歷史記錄」。爲了澄清@ JoeVanDyk的建議,我認爲你需要清除「瀏覽歷史記錄」,因爲清除緩存對我無效(在Chrome/Firefox上測試,如果你知道更多,請添加評論)。
nginx.conf文件(見上面的代碼)
重啓服務器
[email protected]:~# /etc/init.d/nginx restart
。
在此之後,您可以將nginx add_header Strict..
命令恢復爲您以前的狀態。只要確保你再次重複步驟1-3。
我應該補充說,你不需要重新啓動,而是重新加載。例如。 '/etc/init.d/nginx reload' –
圖形ID在這方面提供了一些想法。將緩存時間設置爲0是最佳選擇,如果將其關閉,則需要將其保持爲0幾周以清除客戶端瀏覽器。如果您只需要清除chrome中的HSTS(針對您自己的瀏覽器),則可以在地址欄中使用chrome://net-internals/#hsts
來清除您的網站在您的特定瀏覽器中的緩存。結合下面的「門道」,它變得有用。
您可以通過設置/欺騙自定義標題=>鍵來設置臨時HSTS模式。基本上,如果存在一個特殊的請求標頭,並且它與某個鍵相匹配,請將HSTS設置爲所需緩存時間。這將允許您打開或關閉所有流量的HSTS,但您。在全球啓用之前嘗試使用HSTS(以確保所有資產正在加載)。如果您想暫時清除客戶端緩存而修復某些內容(爲您留出測試空間),此功能也很有用。
你如何設置「緩存時間」? 'chrome:// net-internals /#hsts'沒有選項 – Pacerier
@Pacerier Ah chrome可以清除HSTS,但不能設置緩存時間。緩存時間來自原始/站點HSTS標頭。其中的一部分可能看起來像這樣:'strict-transport-security:max-age = 15552000' ......基本上你需要它說'strict-transport-security:max-age = 0'以禁用客戶端的HSTS並清除它們的重定向(或允許它們連接到無效的SSL)。 – dhaupin
但用戶如何在客戶端自己編輯它? – Pacerier
我發現我無法刪除Chrome中的HSTS條目,因爲我正在使用IP地址進行開發。我似乎無法得到chrome://net-internals/#hsts
刪除條目。我發現Chrome將條目存儲在../AppData/local/Google/Chrome/User Data/Default/TransportSecurity中,因此我剛剛刪除了該文件。它當然會刪除所有HSTS請求,但我懷疑它們會隨着時間的推移而重建。
- 1. 如何給Tomcat +啓用HSTS(HTTP嚴格傳輸安全)JIRA
- 2. 在Azure WebRoles中啓用HTTP嚴格傳輸安全性(HSTS)
- 3. 春季HTTP嚴格傳輸安全性(HSTS)和FireFox
- 4. 如何使用JMeter處理嚴格的傳輸安全性(HSTS)
- 5. 如何使用JMeter記錄處理嚴格的傳輸安全(HSTS)
- 6. libcurl是否支持嚴格的傳輸安全性(HSTS)?
- 7. 爲API設置嚴格傳輸安全標頭
- 8. 如何安全傳輸
- 9. 是否有可能要求您的用戶清除您的站點的HTTP嚴格傳輸安全(HSTS)?
- 10. 禁用應用程序傳輸安全,從HTTP訪問仍然被阻塞
- 11. 禁用嚴格模式
- 12. 使用Socket.IO時禁用應用程序傳輸安全
- 13. WCF傳輸安全
- 14. WCF傳輸安全
- 15. WCF傳輸安全
- 16. 如何禁用不安全的http方法(OPTIONS,PUT,DELETE)
- 17. Greasemonkey如何安全地傳輸數據?
- 18. 如何安全地傳輸文件
- 19. 如何選擇安全傳輸協議
- 20. WCF安全傳輸安全問題
- 21. 應用傳輸安全:NSURLSession/NSURLConnection的HTTP加載失敗
- 22. 應用傳輸安全性已阻止明文HTTP資源
- 23. ATS應用程序傳輸安全:Webview內部的HTTP網址
- 24. WCF的net.tcp運輸安全 - 如何禁用客戶
- 25. 如何禁用cakephp安全性?
- 26. 如何禁用安全警告
- 27. 如何禁用Java安全管理器?
- 28. graph.facebook.com - 傳輸安全塊
- 29. jsf安全傳輸機制
- 30. 安全的數據傳輸
應該記錄下來,一旦您在Rails中啓用'force_ssl'選項,禁用它的唯一方法就是讓所有訪問者清除瀏覽器緩存。( –
)如果情況並非如此,那麼你很容易遭受SSL剝離,這是HSTS旨在緩解的問題。與Rails無關 – Ali
對於開發者來說這將值得一提:)感謝這個答案@ Bruno –