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