2013-03-14 45 views
0

我想提出一個ASP.NET網站,並正在使用Forms Authentication;我正在使用所有安全部件的自定義提供程序(優秀的TinyProviders基於xml的數據提供程序)。如何在ASP.NET保護用戶數據表單驗證

目前,用戶數據存儲(稱爲users.xml中的XML文件)包含完全加密的數據:

<?xml version="1.0"?> 
<ArrayOfXmlUser xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <XmlUser> 
    <UserKey>a34cc5b6-a0b9-4a5e-b055-951w799a8607</UserKey> 
    <UserName>Bill</UserName> 
    <Password>billspassword123</Password> 
    <PasswordSalt /> 
    <Email>[email protected]</Email> 
    <PasswordQuestion /> 
    <PasswordAnswer /> 
    <CreationDate>2013-03-14T21:46:36.7990912+00:00</CreationDate> 
    <LastActivityDate>2013-03-14T21:47:50.3483942+00:00</LastActivityDate> 
    <LastLoginDate>2013-03-14T21:47:50.3483942+00:00</LastLoginDate> 
    <LastPasswordChangeDate>2013-03-14T21:46:36.7990912+00:00</LastPasswordChangeDate> 
    <LastLockoutDate>9999-12-31T23:59:59.9999999</LastLockoutDate> 
    <IsApproved>true</IsApproved> 
    <IsLockedOut>false</IsLockedOut> 
    <FailedPasswordAttemptCount>0</FailedPasswordAttemptCount> 
    </XmlUser> 
</ArrayOfXmlUser> 

我怎麼可以在網站配置爲執行以下操作:

  • 存儲密碼散列(而不是純文本)
  • 加密用戶文件中的所有(或至多電子郵件和名稱)數據

我期待,因爲我使用TinyProvider的二進制分發版從我Web.config做到這一點。

這裏是我的Web.config至今:

<?xml version="1.0" encoding="utf-8"?> 
<authentication mode="Forms"> 
     <forms loginUrl="~/Account/Login.aspx" timeout="2880" /> 
    </authentication> 
    <profile enabled="true" defaultProvider="XmlProfileProvider"> 
     <providers> 
      <clear/> 
      <add name="XmlProfileProvider" 
        applicationName="SampleWebsite" 
        type="Artem.Web.Security.XmlProfileProvider"/> 
     </providers> 
    </profile> 
    <membership defaultProvider="XmlMembershipProvider"> 
      <providers> 
       <clear/> 
       <add name="XmlMembershipProvider" 
        applicationName="SampleWebsite" 
        type="Artem.Web.Security.XmlMembershipProvider" 
        minRequiredPasswordLength="1" 
        minRequiredNonAlphanumericCharacters="0" 
        requiresQuestionAndAnswer="false" 
        requiresUniqueEmail="false" 
        passwordFormat="Clear"/> 
      </providers> 
     </membership> 
    <roleManager enabled="true" cacheRolesInCookie="false" defaultProvider="XmlRoleProvider"> 
     <providers> 
      <clear/> 
      <add name="XmlRoleProvider" 
        applicationName="SampleWebsite" 
        type="Artem.Web.Security.XmlRoleProvider"/> 
     </providers> 
    </roleManager> 

回答

0

因此,對於你的第一個問題:(存儲密碼哈希值(而不是純文本))

答案是,你改變了passwordFormat在你的會員資格提供程序節點從「清除」到「散列」,雖然我沒有在您的XmlUser節點中看到passwordFormat值,這讓我擔心了一下。試試看,看看它是如何發展的。

關於你的第二個問題,你如何加密數據的價值,我想不出你要能夠能夠從web.config中做到這一點的方式。通常你要依靠你的供應商來處理你,所以如果你所選擇的供應商不提供這種選擇,我不知道你將能夠做什麼。

+0

感謝哈希提示 - 我聽說過,但不知道在哪裏把它。感謝您提供的信息,我想我會編輯提供者 - 因爲它是開源的。 – James 2013-03-14 22:29:05

相關問題