2017-10-19 9 views
0

ユーザーがパスワードを忘れた場合、パスワードをリセットできます(ほとんどのWebサイトで)。彼らは、リセットトークンで電子メールを受信し、それを使って新しいパスワードを設定することによってそうする。このトークンは通常、推測から保護するためにしばらくしてから有効期限が切れます。パスワードリセットトークンの有効期限

トークンが256ビットであるとします。たくさんのスーパーコンピュータでそれを徹底的に打つことは、まだ(およそ)10^50年かかる。私。現在の知識では、決して1時間(通常の有効期限)以内にはできません。問題は次のとおりです。なぜ私たちは推測を避けるのですか?

+0

256バイトを意味すると仮定します。また、あなたは暗号化方法について言及しませんでした。あなたが貧弱な暗号化を持っているならば、巨大な鍵でさえ、それはひび割れするのは自明です。 – Trickycm

+0

いいえ、私は少し、ちょうど数字、暗号化キーなしを意味しました。基本的に256ビットの数字を推測するだけです。 –

+0

確かに、あなたは長い時間です。 – Trickycm

答えて

2

推測は実際にあなたがそれを保護しているものではありません。あなたが思ったように、エントロピーの大きさだけでそれが処理されます。

有効期限は、電子メールメッセージから多くの方法が漏洩する可能性があるため、主にそのトークンの不正アクセスを軽減するために役立ちます。あなたの電子メールアドレスにユーザーのパスワードを送信しない理由とまったく同じです。
誰かが電子メールアカウントに一時的にアクセスしたり、アカウント所有者と一緒に読んだり、背後に立ったりしている可能性があります。すべての種類の間違いは可能です。

さらに、誰もデータベーステーブルを古くは一時的な一時的なトークンで溢れさせることを望んでいません。すべての開発者はガベージデータをクリーンアップしたいと考えています。

+0

電子メールアカウントにアクセスしている他の誰かからのアクセスを防ぐことはできません。あなたの肩を見渡す誰かを守ることは、2つのことによって避けられます。最初に、トークンは256ビットのランダム性であり、rembemberは簡単ではありません。次に、ボタン(html-email)で非表示にすることができます。 (あなたのデータベースをきれいにすることは、私が推測するところの素晴らしい議論ですが、あまりセキュリティ関連ではなく、例えば48時間を確実に待つことはできません) –

+0

確かに、トークンを隠すために小さな化粧品をたくさんすることはできますが、それは実際のところポイントではありません。プロセスは、設計によって安全でなければならず、フロントエンドの魔法に依存していない必要があります。もちろん、誰かがアカウントへの永久的なアクセス権を持っていれば、新しい鍵を要求できますが、ここでのキーワードは「リーク」と「一時的」です。 – Narf