内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用
我已经将.ASPXAUTH cookie设置为仅用于https,但我不确定如何有效地对ASP.NET_SessionId执行相同操作。
整个站点使用HTTPS,因此cookie不需要同时使用http和https。
以下是Anubhav Goyal撰写的博客文章中的代码片段:
// this code will mark the forms authentication cookie and the
// session cookie as Secure.
if (Response.Cookies.Count > 0)
{
foreach (string s in Response.Cookies.AllKeys)
{
if (s == FormsAuthentication.FormsCookieName || s.ToLower() == "asp.net_sessionid")
{
Response.Cookies[s].Secure = true;
}
}
}
将此添加到global.asax中的EndRequest事件处理程序应该使所有页面调用都发生这种情况。
注意:建议编辑break;
在成功的“安全”分配内添加语句。我拒绝了这个编辑,因为它只允许其中一个cookie被强制保护,而第二个将被忽略。添加计数器或其他度量标准以确定两者在此时已被锁定并打破,这是不可想象的。然而,用更新的代码技术,这可能会写得更好:
Response.Cookies[FormsAuthentication.FormsCookieName]?.Secure = true;
Response.Cookies["asp.net_sessionid"]?.Secure = true;
要将; secure
后缀添加到Set-Cookie
http标头,我只需使用<httpCookies>
web.config中的元素:
<system.web>
<httpCookies httpOnlyCookies="true" requireSSL="true" />
<system.web>
恕我直言,比在Anubhav Goyal的文章中写代码更方便。
请参阅:http : //msdn.microsoft.com/en-us/library/ms228262(v=vs.100).aspx