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

Ash*_*ngh 5 asp.net session

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

<httpCookies httpOnlyCookies="true" requireSSL="true"/>
<sessionState cookieless="false"/>
Run Code Online (Sandbox Code Playgroud)

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

Ari*_*tos 4

你的问题太笼统了,没有太多线索,所以我可以给你一些继续前进的要点。

[1]还在 cookie 上设置domain,不带www.,因此即使错误地丢失了 www ,也可以读取和设置 cookie。

<httpCookies domain="yourdomain.com" httpOnlyCookies="true" requireSSL="true"/>
Run Code Online (Sandbox Code Playgroud)

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

<forms name=".klidi" path="/" requireSSL="true" cookieless="UseCookies" 
   domain="yourdomain.com" enableCrossAppRedirects="false" 
        slidingExpiration="true" />
Run Code Online (Sandbox Code Playgroud)

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

<roleManager enabled="true" cacheRolesInCookie="false" cookieProtection="All" cookieSlidingExpiration="true" 
           cookieTimeout="20" domain="yourdomain.com" cookieRequireSSL="true">
Run Code Online (Sandbox Code Playgroud)

最后最重要的一点是,在尝试设置或使用任何 cookie 之前,在代码中设置此行,以查看是否错误地没有使用安全连接https

Debug.Assert(HttpContext.Current.Request.IsSecureConnection, "With out https, cookie will not work");
Run Code Online (Sandbox Code Playgroud)

通过设置最后一行,当您创建网站时,您可以在计算机上查看并诊断问题是否来自非安全连接,因为从您将其设置为requireSSLtrue 的那一刻起,任何简单的连接都不会保留任何 cookie。

如果 cookie 以不安全的方式存在并且您有任何冲突,也请尝试清除您的 cookie,或者尝试其他浏览器。

您还可以阅读:某些黑客可以窃取用户的 cookie 并使用该名称登录网站吗?