2011-06-16 137 views
1

環境
IIS 6
.NET 3.5(Web窗體
特定頁面禁用SSL

由於種種原因,我想在網頁級轉向SSL的。這是最好的做法呢?我應該怎麼當我正在做這件事時,請注意這是什麼被認爲是最安全的方式嗎?我打算這樣做的方式是

右鍵單擊頁面 - >導航到屬性 - >單擊文件安全性 - >然後取消選中需要安全頻道。

這會影響其他頁面。任何幫助將非常感謝您

+3

切換到清除協議時,請小心頁面之間的信息泄漏。例如,如果身份驗證令牌或會話ID在http標頭中傳遞,那麼當您切換到明文中的頁面時,這些標識可能會顯示。攻擊者嗅探網絡(見Firesheep - http://en.wikipedia.org/wiki/Firesheep)可以捕獲這些頭文件,並以明文形式發送。所以,如果你這樣做,你必須確保你不會無意中在清晰的頁面上發送安全信息。 – 2011-06-16 13:51:02

回答

1

注意:我使用.aspx來表示ASP.Net頁面,但通常應用以下內容。 (因爲你告訴它SSL不是要求,但這並不意味着它仍然不能使用SSL)。但是,即使你沒有選擇要求安全通道,我相信它仍然會使用安全通道(因爲你告訴SSL不是需要,但這並不意味着它仍然不能使用SSL)。例如,如果您從secure_page1.aspx導航到unsecure_page2.aspx,則默認情況下它將通過HTTPS(或第一頁使用的任何協議)導航,即,當您單擊特定頁面時,它不會自動從HTTPS切換到HTTP鏈接。做到這一點的唯一方法是使用絕對URL鏈接,即對https://www.mydomain.com/secure_page1.aspx,你有說,頁面上的鏈接:

<a href="http://www.mydomain.com/unsecure_page2.aspx">Link to unsecure page</a> 

就個人而言,我會建議,如果一個網站需要任何SSL頁面,該整個網站都是SSL,或者它的整個部分(比如訂購系統)都是SSL,而不僅僅是需要安全的單個頁面。這裏的一個大問題是要記住,任何將發送關鍵信息的頁面必須在用戶輸入表單之前使用SSL 之前的。例如,不要使Login.aspx爲非SSL,然後使用Login-Post.aspx(表單發佈操作url)SSL,因爲這不安全。

我必須承認我已經完成了一個項目,其中網站是HTTP和HTTPS的混合體,我們希望強制用戶的瀏覽器使用我們想要的協議。這樣做的主要原因是HTTP頁面在服務器和瀏覽器上的效率都高於HTTPS,因爲加密會爲每個請求增加開銷。我該項目所用以下(hackish的)方法:

  1. 每一個重定向/鏈路,通過它的頁面都應該被視爲HTTP與HTTPS一個輔助方法是意識到渠道(這隻有當你)如果從相同的協議導航到相同的協議(HTTP - > HTTP,HTTPS - > HTTPS),只需發送/重定向正常(即使用一些服務器端代碼,否則你將不得不手動更新所有鏈接)。 ,相對鏈接)
  2. 如果從HTTP-> HTTPS導航,只需正常發送/重定向,除了使用絕對URL來更改協議。
  3. 如果從HTTPS - > HTTP導航...這是非常困難的,因爲如果您只是通過協議更改發出絕對url鏈接,大多數瀏覽器都會向用戶顯示警告消息。您必須使用META-Refresh重定向。

我使用重定向幫手頁redirect.aspx?url=unsecure_page2.aspx,基本上發出meta標籤是這樣的:

<meta http-equiv="refresh" content="0;url=http://www.mydomain.com/unsecure_page2.aspx"> 
You are being redirected to http://www.mydomain.com/unsecure_page2.aspx. 
If you aren't redirected in 5 seconds, please click <a href="http://www.mydomain.com/unsecure_page2.aspx">here</a>. 

然後,當你在https://www.mydomain.com/secure_page1.aspx,並且要重定向到unsecure_page2.aspx,您使用重定向幫助程序:

See unsecure page <a href="redirect.aspx?url=unsecure_page2.aspx">here</a>! 
+0

我嘗試使用絕對鏈接'http:// mysubDomain.MyDomain.com/unsecure_page2.aspx',但生成了「頁面必須通過安全通道查看」錯誤 – gh9 2011-06-16 13:58:18

+0

@ gh9:如果您打算使用我的方法,那麼您仍然需要取消選中每個應通過HTTP查看的頁面的「需要安全通道」(或者對整個站點禁用並純粹通過業務邏輯進行處理)。如果您希望確保任何人都可以通過HTTP直接訪問頁面,即使未選中「需要安全通道」,也可以手動在頁面上運行代碼來檢查頁面是否爲HTTP,如果是,則會自動重定向到HTTPS。 – mellamokb 2011-06-16 14:14:17