0

私は新しいウェブサイトを持っています。そして、以下は私のシナリオです:

5 人にメールを送信します (番号は重要ではありません)。メール内に、クリックするためのリンクを含めます。

www.domain.com/email=abc@xyz.com&key=abc...xyz

これらのキーは、php で salt と sha1 を使用してランダムに生成されます。メールのリンクをクリックして、更新プロファイル ページに直接アクセスできるようにすることはできますか?? または、もう一度ログインするよう依頼する必要がありますか?

プロフィールの更新ページに直接アクセスさせた場合、どのようなセキュリティ上の注意が必要ですか? 私はログインの使用を知っており、セッションを保存できますが、問題は、彼らが電子メールからリンクをクリックすることであり、それは非常にプライベートで安全だと思います.

私が考えられる唯一のセキュリティ上の欠陥は、ハッカーが魔法のように「キー」(約 60++ 文字) を記憶し、ブラウザの URL を入力できることです: www.domain.com/email=abc@xyz.com&key= abc...xyz.

ハッカーがそれを行うことができれば、私は終わりです。ユーザー アカウントがハッキングされます。

ハッカーがハッキングできるものは他にありますか? プロフィールページのみを更新するだけです。

ところで、彼らがすでにプロファイルを更新している場合、データベースの「キー」を削除する必要がありますか??

私はphpとmysqlを使用しています

4

3 に答える 3

3

パスワード リセット メールは 1 回だけ使用する必要があります。不透明なトークンをデータベースに保存し、メールで送信し、1 回だけ使用できるようにします。

于 2009-08-14T07:35:39.570 に答える
0

Paulに同意しますが、プロファイルの更新については、ログイン後に行うことをお勧めします。また、クライアントがパスワードをリセットしたときに、クライアントのIPアドレスを表示して記憶することもできます。

于 2009-08-14T07:43:21.317 に答える
0

一般的な方法は、「パスワードを忘れた場合」の電子メールが送信されたときにユーザーにパスワードの変更を要求し、変更する前にログインさせることです。

私が作成したパスワード電子メールの最近の実装は次のように機能しました。

  • ユーザーのIDと現在のタイムスタンプを含む配列を作成します。
  • 結果の文字列をシリアル化してから暗号化します(サーバーに保存されている対称鍵を使用します)。
  • その暗号化された文字列をurlパラメーターに入れ(私のアドバイスは、URLに不正な文字が含まれないようにするために、データを2回base64_encodeすることです)、それを電子メールで送信します。
  • 誰かが電子メール内のリンクをクリックしたときは、最初にパラメーターが正しく復号化されていることを確認し(つまり、有効であることを意味します)、次にデータ構造を逆シリアル化します。ここで、元のタイムスタンプを確認します。その時点から時間がかかりすぎる場合は、忘れたパスワードのURLを古すぎるとして拒否してください。
  • URLが有効で、十分に新しい場合は、「パスワードのリセット」ページに移動します。
于 2009-08-14T07:47:06.600 に答える