2012-01-06 34 views
2

當用戶訪問包含用戶配置文件,設置等表單的網站的「帳戶」部分時,我想將用戶重定向到SSL安全服務器。但是,不希望用戶能夠訪問SSL服務器上的其他站點。由於我對模板進行了編碼,因此我的路徑設置爲<a href="/about">作爲示例。如果他們在「帳戶」部分中,並單擊「關於」部分的鏈接,它們仍將位於安全的https:連接上。很顯然,我可以將鏈接硬編碼鏈接到http://服務器,但我正在尋找替代方法。將SSL *僅*添加到特定文件夾

到目前爲止,我在我的.htaccess中有以下內容,它正在工作,但我想知道這是否比這更需要資源密集型?硬鏈接到其他「非帳戶」部分的鏈接會更好嗎,還是通過.htaccess這樣做來解決這個問題?

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteCond $1 ^(account) [NC] 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

RewriteCond %{HTTPS} on 
RewriteCond $1 ^(about|terms|products) [NC] 
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

此外,如果我想阻止通過https訪問主頁://我將如何去添加到我的.htaccess文件?

回答

2

我實際上建議避免使用重寫規則。

重寫規則將http請求變成https請求的問題在於它們實際上是重定向。這意味着,對於要求變成https請求的每個http請求,瀏覽器首先要完整地請求http請求(包括內容,cookie,除安全請求之外),從服務器獲取重定向代碼,然後使請再次向https重新寫入網址。

雖然這是方便,如果你靠這個,而不是確保旨在是https部分確實使用https您網站上的鏈接,這將使它很難檢測到時,這些鏈接錯誤地重定向到http變體。

典型的後果是:

  • 混合內容警告,如果您嵌入使用http後掛自動,透明地變成https,這是一件壞事的東西;和
  • 可能泄漏的數據。

相反,我建議你不要使用中自動更新/重定向並確保是爲了可通過HTTPS的部分僅僅是無法爲所有的普通HTTP的變體(即http://yourhost/account應該返回404s):這至少會讓你注意到你錯誤地鏈接了,並幫助你發現你的安全問題。最終,儘管它們共享相同的主機名,但http站點和https站點可以有兩個不同的URL空間:在這種情況下它不是一件壞事。

我唯一看到從http改寫爲https的情況是非常有用的,那就是當您要確保用戶對您網站的入口點被重定向時。

重寫從httpshttp當然不會出現這個問題。

+0

感謝您的回答。我擔心我會在重定向時加入太多的開銷,這證實了它!我會確保我硬編碼我的鏈接。 – Carlos 2012-01-07 00:22:39

相關問題