パスワードをデータベースに保存する最良の方法 [closed] 質問する

パスワードをデータベースに保存する最良の方法 [closed] 質問する

認証(ユーザー名とパスワード)が必要なプロジェクトに取り組んでいます

また、データベースにも接続するので、ユーザー名とパスワードをそこに保存することにしました。ただし、データベース上のテーブル内の単なるテキスト フィールドとしてパスワードを保存するのは、あまり良い考えではないようです。

私は C# を使用して 2008 Express サーバーに接続しています。このタイプのデータを保存する最適な方法を (できるだけ多くの例を挙げて) 提案していただけますか?

PS 正当な理由があれば、この情報をデータベースに保存しないという考えには賛成です。

ベストアンサー1

パスワードをプレーンテキスト フィールドに保存するのは最悪なアイデアだというのは正しいです。ただし、場所に関して言えば、遭遇するほとんどのケース (正直言って反例は思いつきません) では、パスワードの表現をデータベースに保存するのが適切な方法です。表現とは、ソルト (ユーザーごとに異なる必要があります) と安全な一方向アルゴリズムを使用してパスワードをハッシュし、それを保存して、元のパスワードを破棄することを意味します。次に、パスワードを検証するときに、値をハッシュし (同じハッシュ アルゴリズムとソルトを使用)、データベース内のハッシュ値と比較します。

したがって、これについて考えるのは良いことであり、良い質問ではありますが、これは実際には次の質問の重複です (少なくとも):

ソルトについてもう少し詳しく説明すると、パスワードをハッシュ化して保存するだけでは、侵入者がデータベースを入手した場合、いわゆるレインボーテーブルパスワードを「解読」できるようにするには(少なくともレインボーテーブルに表示されるパスワードは)。これを回避するには、開発者はパスワードにこれを適切に適用すると、レインボー攻撃が実行不可能になります。すべてのパスワードに同じ一意の長い文字列を追加するという誤解がよくありますが、これは悪いことではありませんが、すべてのパスワードに一意のソルトを追加するのが最善です。詳しくはこちらをご覧ください。

おすすめ記事