資安JAVA(八):HTTP強制傳輸安全(HSTS)

來源:John Melton's Weblog
標題:YEAR OF SECURITY FOR JAVA – WEEK 8 – HTTP STRICT TRANSPORT SECURITY
作者:John Melton
內文:
Safe path.
What is it and why should I care?

HTTP強制安全傳輸技術,強制所有瀏覽器只能透過SSL或TLS連線到網站。只要在HTTP網頁標頭加上特殊的HSTS,支援HSTS的瀏覽器就會限定只能經由HTTPS連線。以下是流程:

第一步,使用者造訪網站,不論透過HTTP或HTTPS。通常大部分是HTTP。
第二步,網站輸出網頁,內容包含HSTS標頭。90天內都只能透過HTTPS連線。
第三步,支援HSTS的瀏覽器90天內都不會送出 "非SSL" 的要求給網站。

What should I do about it?


想都不用想了,快點設定你的Header ! 設定後不會有向下相容性的問題。事實上只要小小的修改,就能讓使用者更安全。以下是個快速的JAVA範例,限制所有使用者,在90天內都只能透過HTTPS瀏覽網站。
HttpServletResponse ...;
response.setHeader("Strict-Transport-Security", "max-age=7776000; includeSubdomains");


max-age 最長時間
單位是秒,代表一段時間內都只能透過HTTPS瀏覽網站。設定為0表示忽略此政策,且永遠不使用HTTPS。

includeSubdomains 包含子網域
此屬性為選擇性的。多一句 includeSubdomains 表示所有子網域都要遵循HSTS。

Expiration Reset 到期時間
這是由瀏覽器在每90天之後重設一段時間。假設你設定 Expiration Reset 為90天,而使用者90天內都沒有再造訪網站,瀏覽器將自動延長90天。

Click-Through Insecurity 點擊網頁前的安全性
如果網路通道不安全,HSTS 建議瀏覽器不要送出任何資料到伺服器(不論是憑證問題、網域名問題等等)。瀏覽器的開發商限制通道路線,所以能提供最大安全性。這代表以往常見到的HTTPS警告訊息將會消失,只剩下顯示錯誤的畫面。

Pre-loaded HSTS Lists 預載 HSTS 網址名單
如果你需要更進一步的保障,只有HTTPS才能瀏覽你的網站。你可以將網址加入到HSTS網站名單。目前瀏覽器的開發商皆有提供此名單,使用者第一次造訪你的網站就是以HTTPS連線,所以能提供最大安全性。。 Paypal是個著名的例子。

HSTS很簡單也很有效。他強制使用者透過HTTPS瀏覽網站。如果你的網站完全支援HTTPS,趕快加上HSTS以保護你的使用者。

———–———–
資安Java: 上一篇 || 下一篇
———–———–

留言

這個網誌中的熱門文章

以 SharpPcap 實作可收聽封包的 C# 程式

資安JAVA(四):Session Cookie HTTPOnly Flag