パスワードリセット機能のフローは次のとおりです。
パスワードのリセットが完了した後、ウェブサイトがユーザーをログインページにリダイレクトするのを確認しました。パスワードのリセットが完了した後、ユーザーを自動的にログインすることでセキュリティ上のリスクはありますか?
違いはありません。ハッカーがリンクにたどり着いた場合、ハッカーはとにかくパスワードをリセットして再度ログインできます。それは彼に違いはありません、彼は機能をさらに乱用することはできません。
これを行うのが理にかなっているのは、何らかの形式の 多要素認証 を使用している場合だけです。もちろん、その場合は、リセットワークフローに多要素ビットを含めることもできます。
セキュリティの観点からは、「パスワードのリセット」が自動的にログインするかどうかはどちらかと言えば中立です。どちらの動作も、他の動作よりも本質的に安全ではありません。ほとんどのサイトは、サーバー側に実装するのが最も簡単だったと思います。
考慮すべき点は、セキュリティは誰もが協力している限り達成されるということです。特に 最小の驚きの原則 が最も重要です。セキュリティに適用されるこの原則は、人間のユーザーが期待するように物事が発生しないときに問題が発生していることを意味します。この場合、人間のユーザーはリセット後にログインすることを期待する場合としない場合があります。ユーザーが「驚いた」場合、どうなるか見てみましょう。
その意味で、(かなり弱い)ケースを作ることができますagainstパスワードのリセット時にユーザーを自動的にログに記録します。見過ごされたログインのセキュリティ結果は、予期しない自動ログインの欠如の結果よりも悪化する可能性があります。
コードを書いているときはいつでも、「攻撃者がこの機能をどのように悪用することができるのか」と考えなければなりません。プログラマーはおそらく危険な機能を公開するため、この内部ダイアログがないことは非常に危険です。攻撃者の視点を完全に理解していないと、存在することのない脆弱性を調べることになります。
したがって、この場合:
攻撃者が自動的にログインすることでどのように利益を得ることができるのかafter彼らは被害者のアカウントのパスワードをリセットしました。この場合、明らかに被害はすでに発生しており、ユーザーを自動的にログインすることはあなたの心配事ではありません。
おそらく、彼が正しいパスワードを選択したことを確認するだけです。サイトのパスワードページから離れて閲覧するとどうなりますか?
通常、パスワードを忘れた場合、ワンタイムトークンが生成され(多くの場合リンク)、パスワードを変更してログインできます。
彼らがワンタイムトークンを使用してすぐにログインし、その後パスワードを変更できる場合、それは少し奇妙ですが、完全に安全ではありません。結局のところ、パスワードを変更できれば、後から簡単にログインできます。
重要なことは、トークンを使用した後、トークンが無効化されているかどうかを確認することです。トークンを使用してパスワードを何度も変更できる場合は、実際にセキュリティの問題があります。
パスワードを変更すると、既存のログインセッションがすべてクリアされる可能性があるため、パスワードを持っている悪者もログアウトされます。
すぐにログインできない、または現在のセッションが保持されないという事実は、プログラマーの怠惰か、ルーカスが言ったことかもしれません。
リンクがユーザー名情報を提供しない(そうすべきではない)、ユーザー名がユーザーの電子メールアドレスではない(そうすべきではないが、残念ながらそうである)と仮定すると、「誰か」のパスワードをリセットすることはできません。システムが自動的にログインしない限り、攻撃者にとってどのような利点もあります。再認証が推奨されるアプローチですが、リスクはシステムに必要なセキュリティに関連しています。
以前の回答では、セキュリティの観点から、パスワードリセットの完了後にユーザーが自動的にログインしているかどうかは関係ありませんが、これは実際にはパスワードリセットリンクに含まれているトークンの設計方法に依存しています。
パスワードリセットリンクに含まれるトークンは、必ず次の2つの情報で構成されます。
ここで、2番目の側面、つまり「ユーザーアカウントへの参照」がトークンによってどのように伝えられるかによって、パスワードのリセット後にユーザーが自動的にログインするかどうかが実際に異なります。
攻撃者が何らかの方法でパスワードリセットリンクを含む電子メールを傍受したと仮定します。
Ifトークンは関連付けられたユーザーアカウントに関する情報、より正確にはユーザー名を明らかにしませんandシステムはパスワードのリセット後に自動ログインしませんその後リンクを持っている攻撃者は、このリンクでパスワードをリセットできるだけですが、ユーザー名がまだ知られていないため、システムにアクセスできません。パスワードをリセットした後、攻撃者はログインページにリダイレクトされます。攻撃者はユーザーが入力したユーザー名を入力する必要があります。これは、自分が盗んだリンクからは推測できません。ここで行われる唯一の損害は、パスワードの変更ですが、機密ではありません。データにアクセスしました。
対照的に、ifトークンには、攻撃者が抽出できるユーザー名の形式でユーザーアカウントへの参照が含まれていますthen実際、システムがthenが攻撃者にすでにログインし、システムの機密データにアクセスできる可能性のあるユーザー名(リンクから推測)を知っているため、パスワードのリセット後の自動ログイン。