我正在完成PCIDSS评估。
要求状态密码必须至少每90天更改一次,并且与之前的4个密码不同。
我不确定这是用于访问服务器,还是用于提供给服务器上用户的应用程序。
如果是后者 - 无论如何在ASP.Net 3.5 / 4 Web应用程序和MVC4 Web应用程序中执行此操作?
谢谢,Mark
答案 0 :(得分:1)
这是内部申请吗?如果是这样,请考虑与LDAP / Active Directory集成(假设它用于您的网络密码)。然后可以处理密码规则(即跟踪之前使用的密码规则,确保密码足够复杂并且与先前的密码不同并且强制执行变更频率)。这也意味着您的用户不必记住/保持多个密码,他们会感谢您。
http://msdn.microsoft.com/en-us/library/ms180890(v=vs.80).aspx
答案 1 :(得分:1)
对于您的第一个要求,Asp.Net会员有一个属性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进行比较,并相应地拒绝。
答案 2 :(得分:0)
您可以将密码与创建的日期一起保存在另一个表中。那将是相当简单的
答案 3 :(得分:-1)
&#39;我不确定这是用于访问服务器还是我提供给服务器上用户的应用程序。
通常PCIDSS专注于服务器,所以..这是为了访问服务器。