構成ファイルを利用したフォーム認証を利用する場合、構成ファイルにユーザー情報を記述することになります。
ここで心配なのが、ユーザー情報の漏洩ではないでしょうか。確かに、ASP.NETのデフォルトの設定では、ブラウザからconfigファイルにアクセスすることはできません。しかしながら、ユーザー情報を記述した平文のファイルをサーバーに置いておくという事自体、セキュリティ的に問題があると考える事もできます。
ファイルへのアクセス権を設定する事でも対処可能ですが、ここではパスワードを暗号化することで、少しでも高いレベルでセキュアな状態を保つ方法を紹介します。
暗号化したパスワードを利用するには、フォーム認証を行う際の<credentials>要素のpasswordFormat属性に指定する値を、"SHA1"または"MD5"にして、<user>要素のpassword属性に、passwordFormatで指定したアルゴリズムで暗号化した値を設定するだけです。
<credentials passwordFormat="SHA1">
<user name="nob" password="5BAA61E4C9B93F3F0682250B6CF8331B7EE68FD8" />
</credentials>
あとは、FormsAuthenticationクラスのAuthenticateメソッドにユーザーIDとパスワードを渡して認証を行います。
注意すべきなのは、Authenticateメソッドには、ユーザーIDと”暗号化前の”パスワードを渡すという事です。
Authenticateメソッドは、構成ファイルの設定をもとに、渡されたパスワードを適切なアルゴリズムで暗号化して認証を行います。
つまり、どの暗号化アルゴリズムを利用しているか?や、そもそも暗号化を利用しているのか?という事を、プログラマが意識する必要はないという事です。
※注
当ブログのTipsは、@IT等の情報サイトの内容を参考にして構成された記事
もあります。Tipsの内容に著作権等権利を侵害する内容があった場合には、
告知して下さい。早急に訂正または削除にて対応したいと思います。
ここで心配なのが、ユーザー情報の漏洩ではないでしょうか。確かに、ASP.NETのデフォルトの設定では、ブラウザからconfigファイルにアクセスすることはできません。しかしながら、ユーザー情報を記述した平文のファイルをサーバーに置いておくという事自体、セキュリティ的に問題があると考える事もできます。
ファイルへのアクセス権を設定する事でも対処可能ですが、ここではパスワードを暗号化することで、少しでも高いレベルでセキュアな状態を保つ方法を紹介します。
暗号化したパスワードを利用するには、フォーム認証を行う際の<credentials>要素のpasswordFormat属性に指定する値を、"SHA1"または"MD5"にして、<user>要素のpassword属性に、passwordFormatで指定したアルゴリズムで暗号化した値を設定するだけです。
<credentials passwordFormat="SHA1">
<user name="nob" password="5BAA61E4C9B93F3F0682250B6CF8331B7EE68FD8" />
</credentials>
あとは、FormsAuthenticationクラスのAuthenticateメソッドにユーザーIDとパスワードを渡して認証を行います。
注意すべきなのは、Authenticateメソッドには、ユーザーIDと”暗号化前の”パスワードを渡すという事です。
Authenticateメソッドは、構成ファイルの設定をもとに、渡されたパスワードを適切なアルゴリズムで暗号化して認証を行います。
つまり、どの暗号化アルゴリズムを利用しているか?や、そもそも暗号化を利用しているのか?という事を、プログラマが意識する必要はないという事です。
※注
当ブログのTipsは、@IT等の情報サイトの内容を参考にして構成された記事
もあります。Tipsの内容に著作権等権利を侵害する内容があった場合には、
告知して下さい。早急に訂正または削除にて対応したいと思います。