1

我使用的是开箱即​​用的标准 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 服务器上。数据库架构是一台用于读取的服务器,一台用于写入的服务器,通过复制使它们保持同步。

有谁知道可能是什么导致了这种情况?

4

2 回答 2

1

我想知道负载均衡器有多聪明,以及它是否也在缓存页面。

会员 cookie 被该死的锁定了,所以非常怀疑它是否已被泄露。如果负载均衡器也在缓存它很可能不会传递请求。

于 2009-05-27T18:50:25.870 回答
1

可以实现这一点的一个选项是 cookieless=AutoDetect。如果某个用户的浏览器不支持 cookie,asp.net 将在 url 中嵌入加密的身份验证票证。如果用户碰巧与其他人分享了链接,或者不太直接地在论坛上发布了链接,那么他(她)正在无意中访问他(她)的帐户。

于 2009-03-23T15:56:06.050 回答