我正在使用标准的开箱即用的aspnet成员资格提供程序,我在web.config中有以下设置:
<anonymousIdentification enabled="false"/>
<authentication mode="Forms">
<forms cookieless="AutoDetect" loginUrl="~/XXXX.aspx" name="XXXXAuth" slidingExpiration="true" timeout="432000"/>
</authentication>
...
<membership defaultProvider="XXXMembershipProvider">
<providers>
<add name="XXXMembershipProvider" type="System.Web.Security.SqlMembershipProvider" applicationName="XXX" connectionStringName="XXX" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="true" minRequiredPasswordLength="5" minRequiredNonalphanumericCharacters="0" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" passwordAttemptWindow="10" passwordStrengthRegularExpression=""/>
</providers>
</membership>
今天我遇到了一个问题,用户报告他们已登录并注意到该网站说他们已经登录....作为一个完全不同的用户。与两个用户联系后,结果表明他们都没有从共享计算机访问该站点。两个帐户的数据都没有显示数据库中被“黑客入侵”的迹象。
托管在负载均衡器后面的两个Web服务器上。数据库体系结构是一个用于读取的服务器,一个用于复制的写入服务器,使它们保持同步。
有谁知道可能导致这种情况发生的原因?
答案 0 :(得分:1)
可以实现此目的的选项是cookieless = AutoDetect。如果一个用户的浏览器不支持cookie,asp.net将在网址中嵌入加密的身份验证票证。如果用户碰巧与另一方共享链接,或者更少直接在论坛上发布,则他会无意中访问他(她)的帐户。
答案 1 :(得分:1)
我想知道负载均衡器有多聪明,以及它是否也在缓存页面。
会员cookie非常被锁定,因此非常值得怀疑它是否受到了损害。如果负载均衡器也在缓存,则很可能无法传递请求。