0

私は ASP.NET Web サイトを作成しており、使用していForms Authenticationます。すべてのセキュリティ部分にカスタム プロバイダーを使用しています (優れた TinyProviders xml ベースのデータ プロバイダー)。

現在、ユーザー データ ストア (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>bill@contoso.com</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>

次のことを行うように Web サイトを構成するにはどうすればよいですか。

  • パスワード ハッシュを保存する (プレーン テキストの代わりに)
  • ユーザー ファイル内のすべてのデータ (またはせいぜい電子メールと名前) を暗号化する

私はWeb.configTinyProvider のバイナリ ディストリビューションを使用しているため、私からこれを実行しようとしています。

ここに私の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>
4

1 に答える 1

0

最初の質問: (パスワード ハッシュを保存する (プレーン テキストではなく))

答えは、メンバーシップ プロバイダー ノードの passwordFormat を "Clear" から "Hashed" に変更することですが、XmlUser ノードに passwordFormat の値が表示されないので、少し心配です。試してみて、様子を見てください。

2 番目の質問については、データの値をどのように暗号化しますか? web.config から暗号化できる方法が思い浮かびません。通常、あなたはそれを処理するためにあなたのプロバイダーに頼ることになるので、あなたが選択したプロバイダーがそのオプションを提供していない場合、私はあなたが何をすることができるのかわかりません.

于 2013-03-14T22:20:58.567 に答える