我正在完成PCIDSS评估。每90天更换一次密码以获取ASP.Net以帮助PCIDSS
需求状态密码必须至少每90天更改一次,并且与以前的4个密码中的任何一个不同。
我不确定这是为了访问服务器,还是我在服务器上向用户提供的应用程序。
如果是后者 - 无论如何在ASP.Net 3.5/4 Web应用程序和MVC4 Web应用程序中执行此操作?
谢谢,马克
我正在完成PCIDSS评估。每90天更换一次密码以获取ASP.Net以帮助PCIDSS
需求状态密码必须至少每90天更改一次,并且与以前的4个密码中的任何一个不同。
我不确定这是为了访问服务器,还是我在服务器上向用户提供的应用程序。
如果是后者 - 无论如何在ASP.Net 3.5/4 Web应用程序和MVC4 Web应用程序中执行此操作?
谢谢,马克
您可以将密码保存在另一个表中,以及创建的日期。这将是相当直接的
我使用默认的成员和角色提供程序与ASP.Net框出来。我希望我不是唯一一个试图遵守PCI DSS的asp.net开发人员,所以我确信已经有一个解决方案。谢谢,马克。 – Mark 2012-08-11 22:54:06
这是一个内部应用程序?如果是这样,考虑与LDAP/Active Directory集成(假设它用于网络密码)。然后,可以处理密码规则(即,跟踪以前使用过的内容,确保密码与以前执行更改频率的&不同)。这也意味着你的用户不必记住/保持同步多个密码,他们会感谢你。
http://msdn.microsoft.com/en-us/library/ms180890(v=vs.80).aspx
为了您的第一个要求,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进行比较并相应地拒绝。
'我不确定这是用于访问服务器还是用于我在服务器上提供给用户的应用程序。
一般PCIDSS专注于服务器所以..这是为了访问服务器。
为了帮助澄清其他人,我收到了TrustWave的回复:8.5.X项目不适用于Web应用程序的用户,而是适用于访问服务器。所以这是关于实际服务器的安全性,而不是登录到Web应用程序的用户。希望这会有所帮助,马克 – Mark 2012-08-12 07:41:16