2012-12-28 84 views
0

我的應用程序使用ASP.NET會員供應商。經過正確的配置並在配置文件中指定了密碼格式後,用戶密碼仍然以純文本而不是散列值存儲。
我在做什麼錯?
這裏是我的webcongfigurationfile爲什麼ASP.NET會員供應商不加密我的密碼

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 

<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
</configSections> 
<connectionStrings> 
<add name="db_connection" providerName="System.Data.SqlClient" connectionString="Data Source=192.168.11.10;Integrated Security=true;Initial Catalog=TestDB;User ID=sysad;[email protected]_ec"/> 
</connectionStrings> 
<system.web> 
<compilation debug="true" targetFramework="4.5" /> 
<httpRuntime targetFramework="4.5" /> 
<pages> 
    <namespaces> 
    <add namespace="System.Web.Optimization" /> 
    </namespaces> 
    <controls> 
    <add assembly="Microsoft.AspNet.Web.Optimization.WebForms" namespace="Microsoft.AspNet.Web.Optimization.WebForms" tagPrefix="webopt" /> 
    <add tagPrefix="ajaxToolkit" assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" /> 
    <add assembly="JuiceUI" namespace="Juice" tagPrefix="juice" /> 
    </controls> 
</pages> 
<authentication mode="Forms"> 
    <forms loginUrl="~/Account/Login.aspx" timeout="25" /> 
</authentication> 





<membership defaultProvider="Myprovider"> 
    <providers> 
    <add name="Myprovider" 
    type="System.Web.Security.SqlMembershipProvider" 
    passwordFormat="Hashed" 
    connectionStringName="db_connection" 
    enablePasswordRetrieval="false" 
    enablePasswordReset="true" 
    requiresQuestionAndAnswer="false" 
    requiresUniqueEmail="false" 
    maxInvalidPasswordAttempts="3" 
    minRequiredPasswordLength="7" 
    minRequiredNonalphanumericCharacters="1" 
    passwordAttemptWindow="10" 
    applicationName="" /> 
    </providers> 
</membership> 



</system.web> 


</configuration> 

回答

0

注:我沒有爲此工作。

看看http://msdn.microsoft.com/en-us/library/wfdhbte0.aspx,以及用於

獲取或設置用於敏感 會員信息的加密類型名爲HashAlgorithmType屬性。

<membership defaultProvider="Myprovider" hashAlgorithmType="someValue">
的 「someValue中」 可以是SHA1MD5

對不起,我無法幫上太多忙。這完全基於查看MSDN文檔。

+0

@ shahkalpesh,我這樣做對我的Web配置文件 – kombo

+0

我已經通過幾樣了網上,他們顯示出類似的一個礦山 – kombo

+0

你用'SHA1'或'MD5'加上'HashAlgorithmType'到你的web配置? – shahkalpesh

0

我看來像你 認證標籤 的machineKey標籤是不完整的 缺少 。閱讀以下鏈接,讓我們知道它是如何發展的。我和我的網站有類似的問題,並遵循這些教程的魅力。

http://www.asp.net/web-forms/tutorials/security/introduction/forms-authentication-configuration-and-advanced-topics-vb

我進入更詳細,但其中午的時候,你對你自己:)祝你好運。


編輯:我抓出了我說的有關您的身份驗證標記。我的意思是你的machinekey標籤丟失了。創建它的說明與身份驗證標籤教程位於同一頁面上,我將它們混合起來。

以下是你需要的代碼:

<configuration> 

<system.web> 

... Some markup was removed for brevity ... 

<machineKey 

decryption="AES" 

validation="SHA1" 

decryptionKey="1513F567EE75F7FB5AC0AC4D79E1D9F25430E3E2F1BCDD3370BCFC4EFC97A541" 

validationKey="32CBA563F26041EE5B5FE9581076C40618DCC1218F5F447634EDE8624508A129" 

/> 

</system.web> 

</configuration> 

的鍵列有從教程網站採取的,但你需要生成自己的。它們可以使用一些流行的隨機密鑰生成器生成。我會建議使用史蒂夫吉布森的Perfect Passwords Web Page

+0

@ Lopsided,我會檢查這個nextweek星期一,當我恢復。今天是休息日。 – kombo

+0

查看最新的答案。我知道這是在那個教程的某個地方,但我正在趕緊把它們混合起來。回顧一下,你的認證密鑰看起來很好;這是您需要工作的機器標籤。 – Lopsided