2009-02-19 98 views
8

我讀到https連接下運行的頁面無法與另一個頁面(基於cookie)共享一個InProc會話(或同樣的事情)定期http。我的網站運行在Server 2003,IIS 6和.Net 2.0上。如何在http和https之間共享一個asp.net會話

經過一些實驗後,似乎在通過https連接時存儲會話中的數據的頁面CAN隨後即使在純http下運行也可以訪問數據。

那麼,是否有可能或應該去檢查SSL配置中的缺陷?

回答

15

MSDN

當用戶移動回安全和公共區, ASP.NET生成會話cookie(或 URL之間來回 如果已經啓用了cookie的 會話狀態)與他們一起在 明文中移動,但身份驗證 cookie永遠不會被傳遞 未加密的HTTP連接只要 由於安全cookie屬性設置爲

因此基本上,如果Secure屬性設置爲false,則Cookie可以通過HTTP和HTTPS傳遞。

我已經加入這個我Global.asax文件避免了這個問題:

void Session_Start(object sender, EventArgs e) 
{ 
    if (Request.IsSecureConnection) Response.Cookies["ASP.NET_SessionID"].Secure = false; 
} 

這意味着,如果通過HTTP創建會話cookie,它只會通過HTTPS訪問。

+0

關閉此功能會帶來什麼樣的安全隱患? – 2015-09-03 23:07:57

1

尋找問題到目前爲止還沒有出現太多討論,仍在尋找。

編輯:好的現在找到一些東西。

如果兩組頁面都在同一個應用程序/網站中,它似乎能正常工作。

所以我會繼續前進,感覺放心。

5

IIS設置 在IIS屬性窗口,ASP的選項卡下 - >會話屬性,有一個

我通過設置這個固定的這個間歇性問題,爲自己「上的安全連接的新ID」的設置假。

+0

這似乎已在IIS7中消失 - 或者我只是不清楚在哪裏可以找到。這是每個站點還是全局的服務器? – 2013-05-04 21:52:38

1

如果上述任何解決方案不起作用,請嘗試此操作。經過幾天的研究,我已經弄清楚了這一點。

app.UseCookieAuthentication(new CookieAuthenticationOptions 
{ 
    ... 
    ... 
    CookieSecure = CookieSecureOption.Never 
}); 
相關問題