1

誰かに確認メールを送信する Web サイトを持っています。

メールには、ユーザーがメールを受信したことを確認するためにクリックする必要があるリンクが必要です。

ユーザーのパスワード (またはランダムなコード) を確認アドレスに含めたいので、ユーザーはもう一度手で入力する必要はありませんが、これを行うと、パスワードがブラウザの履歴に残り、ログファイル。

ユーザー名やパスワードなどの情報を送信するための確認リンクを電子メールで取得し、何らかの形でリンクに到達しないようにする他の方法はありますか?
たとえば、電子メールに入力フォームを用意し、パスワードを GET ではなく POST として送信することは可能ですか?

4

3 に答える 3

6

これが通常機能する方法は、確認メールに、何らかの GUID (Globally Unique Identifier) を含むリンクが含まれていることです。GUID は、ユーザーのアカウントに関連付けられています。リンクがクリックされると、Web アプリケーションは単純に確認フラグを設定し、通常のユーザー名とパスワードの組み合わせではなく、GUID を使用してユーザーをログインさせます。

于 2008-10-17T16:05:44.943 に答える
5

ユーザーの ID と現在の時刻に基づいて、16 進ダイジェスト (md5 など) を計算します。このコードをデータベースに永続化するか、それをファイル名としてファイルに書き込み、ユーザーの ID と電子メール アドレスを含めます。

"/confirm_email/{hexdigest}" または "/confirm_email.php?code={hexdigest}" のような URI に基づいて GET 要求を受信するように http ハンドラー (cgi、php、サーブレットなど...) を設定します。

ユーザーがメールを確認する必要がある場合は、ダイジェストを含む上記のサーブレットへのリンクを送信します。

誰かがこの URI にリンクすると、一致するダイジェストを含むデータベース レコードまたはファイルを取得します。見つかった場合は、含まれている電子メール アドレスが検証されます。

より堅牢にしたい場合: ユーザーが電子メールを検証するときに、16 進ダイジェストをソルトなしの電子メール アドレス自体のハッシュに変更します。次に、誰かの電子メールが変更され、再確認が必要かどうかをテストできます。

于 2008-10-17T16:12:57.860 に答える
2

メールで GUID を渡すことができます。その特定の GUID をユーザーに関連付ける必要があります。次に、ユーザーがリンクをクリックすると、GUID がアプリケーションに送り返され、QueryString として取得できます。ユーザーが承認した更新プログラムの GUID を抽出します。

于 2008-10-17T16:04:06.270 に答える