2012-08-11 47 views
1

我正在完成PCIDSS評估。每90天更換一次密碼以獲取ASP.Net以幫助PCIDSS

需求狀態密碼必須至少每90天更改一次,並且與以前的4個密碼中的任何一個不同。

我不確定這是爲了訪問服務器,還是我在服務器上向用戶提供的應用程序。

如果是後者 - 無論如何在ASP.Net 3.5/4 Web應用程序和MVC4 Web應用程序中執行此操作?

謝謝,馬克

+0

爲了幫助澄清其他人,我收到了TrustWave的回覆:8.5.X項目不適用於Web應用程序的用戶,而是適用於訪問服務器。所以這是關於實際服務器的安全性,而不是登錄到Web應用程序的用戶。希望這會有所幫助,馬克 – Mark 2012-08-12 07:41:16

回答

0

您可以將密碼保存在另一個表中,以及創建的日期。這將是相當直接的

+0

我使用默認的成員和角色提供程序與ASP.Net框出來。我希望我不是唯一一個試圖遵守PCI DSS的asp.net開發人員,所以我確信已經有一個解決方案。謝謝,馬克。 – Mark 2012-08-11 22:54:06

1

這是一個內部應用程序?如果是這樣,考慮與LDAP/Active Directory集成(假設它用於網絡密碼)。然後,可以處理密碼規則(即,跟蹤以前使用過的內容,確保密碼與以前執行更改頻率的&不同)。這也意味着你的用戶不必記住/保持同步多個密碼,他們會感謝你。

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

+0

嗨 - 不,它是一個網絡應用程序 - 所以我的網站的客戶,登錄到網站,而不是通過Windows。 – Mark 2012-08-11 22:52:10

+0

作爲參考,我們這樣做 - LDAP服務器執行面向互聯網的Web應用程序的密碼策略。 – Mike 2012-11-28 21:19:19

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進行比較並相應地拒絕。

-1

'我不確定這是用於訪問服務器還是用於我在服務器上提供給用戶的應用程序。

一般PCIDSS專注於服務器所以..這是爲了訪問服務器。