2012-02-02 51 views
2

這應該是一個快速...這裏是我目前的.htaccess文件:力HTTPS爲特定的URL

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

# END WordPress 

我需要做的是確保如果達到http://www.mydomain.com/cart/,它需要給力HTTPS ...所以/cart//cart/

回答

5

一旦請求發送到http://www.mydomain.com/cart/,如果請求中有任何敏感數據,則爲時已晚。強制它打破!至少,它會給你一個指示,說明你的鏈接有問題。在以前的答案更多細節:

[...]由請求到達服務器, 爲時已晚的時間。如果有MITM,那麼在你收到請求之前,他已經完成了他的攻擊(或者是其中的一部分)。

那麼你最好能做的就是回覆沒有任何有用的內容。在 這種情況下,重定向(使用301或302和位置標頭) 可能是合適的。但是,如果用戶(或者作爲開發人員,即使您是 )忽略警告(在這種情況下, 瀏覽器將遵循重定向並以幾乎 透明地重試請求),它可能會隱藏問題。

因此,我只想建議返回404種狀態:

  • http://yoursite/https://yoursite/是有效的兩個不同的網站。沒有理由期待從一個URI空間到另一個URI空間的所有 資源的1:1映射(就像您可以擁有完全不同的層次結構的 ftp://yoursite/一樣)。
  • 更重要的是,這是一個應該向上游處理的問題:應該認爲使用http:// 將用戶引導至此資源的鏈接已損壞。不要讓它自動工作。 對於不應該存在的資源有404狀態是沒有問題的。在 另外,當出現錯誤時返回錯誤消息是很好的: 它會迫使您(或至少提醒您)作爲開發人員,您需要修復導致此問題的頁面/表單/鏈接。

編輯:(例)

比方說,你有http://example.com/,您的網站的非安全部分,允許用戶瀏覽的項目。他們沒有在該階段登錄,因此可以通過簡單的HTTP執行。

現在,它的購物車/付款時間。你需要HTTPS。您將用戶發送至https://example.com/cart/。如果將用戶發送到購物車部件的鏈接之一使用普通HTTP(即http://example.com/cart/),則這是一個發展錯誤。它不應該在那裏。當你認爲你將被髮送到https://example.com/cart/時,讓過程中斷,允許開發人員看到它(並且一旦修復,用戶應該永遠不會有問題)。

如果它只是指向您網站的HTTPS部分(通常是通過某處鏈接進行HTTP GET),那麼這並不是一個很大的風險。

自動重定向變得更加危險的地方在於何時會隱藏更大的問題。

例如,你在https://example.com/cart/creditcarddetails,你已經填寫了一些應該保持在SSL上的信息。但是,開發人員犯了一個錯誤,並且在表單中使用了一個簡單的http://鏈接。另外,開發人員(畢竟用戶/人)在Firefox中說「警告:您正在從安全頁面轉到非安全頁面」時點擊了「不要再顯示此消息」順便說一下,不幸的是,Firefox警告後驗:當它向用戶顯示消息時,它已經提出了不安全的請求)。現在,具有敏感數據的GET/POST請求首先被髮送到不正確的明文http://鏈接,並且自動重寫告訴瀏覽器通過https://再次嘗試請求。它看起來很好,因爲就用戶而言,這一切都發生在幾分之一秒內。但是,並非如此:敏感數據已發送清楚。

將純粹的HTTP部分製作成只應通過HTTPS執行的操作,不會做任何有用的事情,實際上可以幫助您更清楚地看到錯誤。因爲如果鏈接正確實施,用戶永遠不會終止那裏,這對他們來說不是問題。

+0

請求中沒有任何敏感數據...我一起發送的唯一內容是在URL中,它是隻是一個參數,表明他們正在購買什麼產品。 – dcolumbus 2012-02-02 21:24:12

+0

@dcolumbus,請求中是否有敏感數據並不重要。重點是不應該有任何請求不通過HTTPS(如果你總是希望通過HTTPS),那麼任何發送一個簡單請求的東西都將是一個錯誤。強制中斷可以幫助您檢測到錯誤並防止錯誤的假設(也許有一天您會錯誤地將敏感數據放入請求中)。 – Bruno 2012-02-02 21:28:58

+0

我想要做的就是確保當用戶被引導到'/ cart /'時,我們強制啓用SSL。如果沒有SSL,他們也無法完成整個流程。 – dcolumbus 2012-02-02 21:30:43

1

嘗試添加該之前其他規則(但RewriteBase後)內的任何:

RewriteCond %{HTTPS} off 
RewriteRule ^cart/(.*)$ https://www.mydomain.com/cart/$1 [R,L] 
+0

我得到310「太多重定向」錯誤。啊。有任何想法嗎? – dcolumbus 2012-02-02 21:22:15

+0

有什麼重定向https回http?你的日誌說什麼? – 2012-02-02 21:26:57

+0

/home/108777/domains/mydomain.com/html/.htaccess:重定向到非URL – dcolumbus 2012-02-02 21:44:08