[解決済み] パスワードリセットを行うには?
質問
ASP.NETでアプリケーションを作っているのですが、具体的にどのようにすれば
Password Reset
関数を実装する方法を具体的に考えてみました。
具体的には、以下のような質問があります。
- クラックされにくいUnique IDを生成する良い方法は何ですか?
- タイマーを付けるべきでしょうか?もしそうなら、それはどのくらいの長さであるべきですか?
- IP アドレスを記録する必要がありますか? それは重要ですか?
- パスワードリセット画面では、どのような情報を要求すればよいのでしょうか?電子メール アドレスだけですか?それとも、電子メールアドレスと、彼らが「知っている」情報の一部でしょうか?(好きなチーム、子犬の名前など)
他に気をつけるべきことはありますか?
<ブロッククオートNB : その他の質問 ある 用語解説 技術的な実装を完全に無視しています。実際、受け入れられた回答は、血なまぐさい詳細を隠しています。私は、この質問とその後の回答が血なまぐさい詳細に踏み込むことを望みますし、この質問をより狭く表現することによって、回答が「ふわふわ」ではなく「血なまぐさい」ものになることを望みます。
編集 : そのようなテーブルがSQL Serverでどのようにモデル化され、処理されるかにまで踏み込んだ回答や、回答へのASP.NET MVCのリンクがあればありがたいのですが。
どのように解決するのですか?
たくさんの良い答えがあるので、すべてを繰り返すのは面倒です。
1つの問題を除いて、それは間違っているにもかかわらず、ここでほとんどすべての答えによって繰り返されています。
Guidsは(現実的に)一意であり、統計的に推測することは不可能です。
これは真実ではありません。GUIDは非常に弱い識別子であり、本来は
ではありません。
を使うべきではありません。
構造を調べると、最大で合計128ビット...今となっては多くないと思われますね。
そのうち、前半は(生成系の)典型的な不変量で、残りの半分は時間依存(あるいはそれに類するもの)です。
全体として、それは非常に弱く、簡単にブルートフォースされるメカニズムです。
だから、そんなの使わないで!
その代わりに、単純に暗号的に強力な乱数生成器 (
System.Security.Cryptography.RNGCryptoServiceProvider
) を使用し、少なくとも 256 ビットの生のエントロピーを取得します。
残りのすべては、他の多数の回答が提供したとおりです。
関連
-
[解決済み] enumを列挙するには
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] C#で文字列のエンコーディングを手動で指定せずに、一貫性のあるバイト表現を得るには?
-
[解決済み] 乱数(int)を生成する方法を教えてください。
-
[解決済み] Microsoft JSONの日付はどのようにフォーマットするのですか?
-
[解決済み] DateTime型の誕生日から年齢を計算するにはどうしたらいいですか?
-
[解決済み] 後で平文を取り出すためのユーザーパスワードの保管について、倫理的にどのように取り組むべきでしょうか?
-
[解決済み] ASP.NET MVCでenumからドロップダウンリストを作成するにはどうすればよいですか?
-
[解決済み】XKCDコミック「Bobby Tables」のSQLインジェクションはどのように動作するのでしょうか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】プログラム実行中に1秒待つ
-
[解決済み] [Entity Framework 4.1でエンティティに関連オブジェクトを追加する際に、エンティティオブジェクトをIEntityChangeTracker.の複数のインスタンスから参照できない。
-
[解決済み】パディングが無効で、削除できない?
-
[解決済み] DBNullから他の型にオブジェクトをキャストすることができない
-
[解決済み】ORA-01008: すべての変数がバインドされていません。これらはバインドされています。
-
[解決済み] [Solved] 不正な文字列値: '\xEFxBFxBD' for column
-
[解決済み】WSACancelBlockingCallの例外について
-
[解決済み】2年前のMSDateを把握する【クローズド
-
[解決済み】スレッド終了またはアプリケーションの要求により、I/O操作が中断されました。
-
[解決済み] 後で平文を取り出すためのユーザーパスワードの保管について、倫理的にどのように取り組むべきでしょうか?