会话不会保留值并始终返回null

时间:2012-09-20 05:27:44

标签: asp.net session

我有一个网站,完全通过HTTPS。即使有人试图通过HTTP访问,他也会被重定向到HTTPS。我正在使用表单身份验证。最近我更改了一个设置,使网站更安全,之后Session没有保留值,并且总是返回null。设置是,

<httpCookies httpOnlyCookies="true" requireSSL="true"/>
<sessionState cookieless="false"/>

我不知道如何解决这个问题。我该如何解决这个问题?另外,如果我不使用此设置,我的网站是否容易受到攻击?考虑其他一切都是安全的。

1 个答案:

答案 0 :(得分:4)

你提出的问题太过笼统,没有多少线索,所以我可以给你一些观点继续前进。

[1] 还设置了Cookie上的domain,而不是www.,因此即使错误地遗漏了www,也可以读取和设置Cookie

<httpCookies domain="yourdomain.com" httpOnlyCookies="true" requireSSL="true"/>

[2] 您还需要设置具有类似参数的<forms...(以及您设置的其他内容)

<forms name=".klidi" path="/" requireSSL="true" cookieless="UseCookies" 
   domain="yourdomain.com" enableCrossAppRedirects="false" 
        slidingExpiration="true" />

[3] 您还需要使用类似的参数设置<roleManager

<roleManager enabled="true" cacheRolesInCookie="false" cookieProtection="All" cookieSlidingExpiration="true" 
           cookieTimeout="20" domain="yourdomain.com" cookieRequireSSL="true">

并且在您尝试设置或使用任何Cookie之前,最重要的是在您的代码上设置此行,以查看您是否错误地使用了安全连接https

Debug.Assert(HttpContext.Current.Request.IsSecureConnection, "With out https, cookie will not work");

通过设置最后一行,在您创建站点时在计算机上,您可以查看并诊断问题是否来自非安全连接,因为从您将requireSSL设置为true,任何简单连接不会持有任何cookie。

如果Cookie存在为非安全且您有任何冲突,或尝试使用其他浏览器,请尝试清除Cookie。

您还可以阅读:Can some hacker steal the cookie from a user and login with that name on a web site?