[解決済み] パスワードをデータベースに保存する最適な方法【終了しました
質問
私は、認証(ユーザー名とパスワード)が必要なプロジェクトに取り組んでいます。
また、データベースに接続するので、ユーザー名とパスワードはそこに保存しようと考えました。しかし、パスワードをデータベース上のテーブルのテキストフィールドとして持つことは、それほど良いアイデアではないように思われます。
C#を使用し、2008 express serverに接続しています。このようなデータを保存するのに最適な方法を(できるだけ多くの例を挙げて)どなたかご提案いただけないでしょうか?
P.S この情報をデータベースに保存しないという考えも、正当な理由があれば受け入れることができます。
解決方法は?
パスワードをプレーンテキストのフィールドに保存することは、正しいです。 恐ろしい のアイデアです。しかし 立地条件としては を保存することは、ほとんどの場合、遭遇する可能性があります(正直なところ、反例が思いつきません)。 表現 をデータベースに保存することが適切です。表現というのは、ソルト(これはユーザーごとに異なるはずです)と安全な1ウェイアルゴリズムを使ってパスワードをハッシュ化し その 元のパスワードは捨てます。そして、パスワードを検証したいときは、その値を(同じハッシュアルゴリズムとソルトを使って)ハッシュ化し、データベース内のハッシュ化された値と比較します。
ということで、考えていることはいいことだし、いい質問なのですが、実はこの質問は(少なくとも)重複しているのです。
- ユーザー情報およびユーザーログインとパスワードの最適な保存方法
- データベースパスワードの保存に関するベストプラクティス
- パスワードの塩漬け:ベストプラクティス?
- パスワードをプレーンテキストでphp変数やphp定数に格納してもいいのでしょうか?
ソルティングについてもう少し詳しく説明すると、パスワードを単純にハッシュ化して保存することの危険性は、もし不法侵入者があなたのデータベースを手に入れた場合、彼らはまだいわゆる レインボーテーブル パスワード(少なくともレインボーテーブルに表示されるもの)を解読することができるようにするためです。これを回避するために、開発者は ソルト をパスワードに追加することで、レインボーアタックは単純に実行不可能になります。 よくある誤解として、すべてのパスワードに同じユニークで長い文字列を追加するというものがありますが、これは決してそうではありません。 恐ろしい すべてのパスワードに一意の塩を追加するのがベストです。 詳しくはこちらをお読みください。
関連
-
(NTDLL.DLL): 0xC0000005: アクセス違反 - 解決
-
mongodbの更新操作の更新
-
致命的なエラーです。D:Fatalエラー:メンバ関数prepare()の非オブジェクトに対する呼び出し in D:\...
-
PostgreSQLのエラー[ERROR: relation "xxxx" does not exist]を解決する。
-
sql common mistake of incorrect predicate orderConversion failed when converting varchar value 'abc' to data type int
-
[解決済み] 後で平文を取り出すためのユーザーパスワードの保管について、倫理的にどのように取り組むべきでしょうか?
-
[解決済み】PHPパスワードのハッシュとソルトの安全性について
-
[解決済み】シャーディングとは何ですか、なぜそれが重要なのですか?
-
[解決済み】redisデータベースをあるサーバーから別のサーバーに移動するにはどうすればいいですか?
-
[解決済み] PostgreSQLでタイムスタンプを自動更新する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
mysql reports Access denied; you need (at least one of) SUPER privilege(s) for this operation
-
MySQL - エラーです。executeQuery() でデータ操作ステートメントを発行できません。
-
(NTDLL.DLL): 0xC0000005: アクセス違反 - 解決
-
IEntityChangeTracker の複数のインスタンスからエンティティオブジェクトを参照できない場合の対処法
-
Oracleデータベースの挿入データエラーです。ORA-06550
-
MySQLの基本的な使い方 (I)
-
MySql への JDBC 接続エラー com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException.MySQLSyntaxErrorException: 不明なデータベース 'test'
-
[解決済み] パスワードをデータベースに保存する最適な方法【終了しました
-
[解決済み] データベースフィールドの標準的な長さのリスト
-
Postgresqlのインストールに関する問題