我有一个网站,完全通过HTTPS。即使有人试图通过HTTP访问,他也会被重定向到HTTPS。我正在使用表单身份验证。最近我更改了一个设置,使网站更安全,之后Session没有保留值,并且总是返回null。设置是,
<httpCookies httpOnlyCookies="true" requireSSL="true"/>
<sessionState cookieless="false"/>
我不知道如何解决这个问题。我该如何解决这个问题?另外,如果我不使用此设置,我的网站是否容易受到攻击?考虑其他一切都是安全的。
答案 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?