有時候,為了網站的安全,我們希望用戶瀏覽網站某些頁面或者整個網站的時候,必須透過HTTPS的方式瀏覽,而不允許HTTP明文方式瀏覽,如何正確的配置網站和編寫程式以達到一個理想的效果呢?
有些網站開發人員,採用了只開放了HTTPS-443埠,而關閉HTTP-80埠的方式,這樣的話,雖然可以造成用戶的確無法用HTTP瀏覽網站了,但如果用戶透過HTTP瀏覽網站,譬如直接在位址欄輸入網址www.xxx.com,則系統預設就採用了HTTP方式,這時用戶就會看到一個網站無法瀏覽的出錯資訊,而絕大多數用戶都不具備專業的網站知識,他們不會認為是自己輸入不正確,而是認為網站出錯了。那如何妥善解決來自用戶HTTP的瀏覽請求呢?
正確的做法,應該是將用戶透過HTTP瀏覽網站的請求,重新定位到HTTPS請求上。首先,要將網站配置成HTTP和HTTPS都可以瀏覽的模式,確保80和443埠全部打開,然後在那些必須透過https瀏覽的頁面的頭部加入一個判斷語句,邏輯如下:
If 用戶是透過HTTP瀏覽本頁面
Then 用HTTPS方式重新瀏覽本頁面
以下用ASP和JSP代碼舉例:
If Request.ServerVariables("HTTPS")="off"
Then response.redirect "https://www.myssl.tw" & Request.ServerVariables("PATH_INFO") response.end
End If
String scheme=request.getScheme();
String url=request.getRequestURI();
if(!"HTTPS".equalsIgnoreCase(scheme))
{
response.sendRedirect("https://www.myssl.tw"+url);
return ;
}
對於必須透過HTTPS的頁面,只需加入以上語句,即使用戶是透過HTTP瀏覽的該頁面,系統也會自動將其轉變為HTTPS。
|