1

我正在完成 PCIDSS 评估。

要求状态密码必须至少每 90 天更改一次,并且与之前的 4 个密码中的任何一个都不同。

我不确定这是为了访问服务器,还是为了访问我提供给服务器上用户的应用程序。

如果是后者 - 无论如何在 ASP.Net 3.5/4 Web 应用程序和 MVC4 Web 应用程序中强制执行此操作?

谢谢,马克

4

4 回答 4

1

这是内部申请吗?如果是这样,请考虑与 LDAP/Active Directory 集成(假设正在用于您的网络密码)。然后可以处理密码规则(即跟踪以前使用过的内容,确保密码足够复杂且与以前的密码不同并强制更改频率)。这也意味着您的用户不必记住/保持同步多个密码,他们会感谢您的。

http://msdn.microsoft.com/en-us/library/ms180890(v=vs.80).aspx

于 2012-08-11T22:04:48.803 回答
1

对于您的第一个要求,Asp.Net Membership 有一个属性MembershipUser.LastPasswordChangedDate然后您可以像这样挂钩到您的登录名:

        if (Membership.ValidateUser(userName, password))
        {
            MembershipUser theUser = Membership.GetUser(userName);
            if (theUser.LastPasswordChangedDate.Date.AddDays(90) < DateTime.Now.Date)
            {
                // Inform user password expired + redirect user to change password screen
            }
            FormsAuthentication.SetAuthCookie(userName, rememberMe);
        }

您需要自己实现第二个要求(即不能与最后 4 个密码相同)。根据建议,创建一个UserPasswordHistory外键返回 aspnet_User.UserId 的新表,其中包含密码散列,每次用户更改他/她的密码时都会插入该散列。然后,您可以将新密码的哈希值与前 4 个进行比较并相应地拒绝。

于 2012-08-12T10:43:40.527 回答
0

您可以将密码连同创建日期一起保存在另一个表中。这将是相当简单的

于 2012-08-11T21:57:18.177 回答
-1

'我不确定这是为了访问服务器,还是为了访问我在服务器上提供给用户的应用程序。

通常PCIDSS专注于服务器,所以..这是对服务器的访问。

于 2015-10-29T09:23:07.950 回答