質問

この質問はおそらく以前に聞かれたことがありますが、答えを見つけるのに十分なほど検索を正確に言い表すことができないようです。

通常、インターネット上のフォーラムにアクセスするためにサインアップすると、承認メールが送信され、承認を実行するページに移動するリンクをクリックできます。

私が欲しいのは、既にログインしているユーザーではなく、作成済みのユーザーにメールを送信し、メール内のリンクをクリックして提案を受け入れるようにすることです。もちろん、リンクはデータベース操作を実行し、何らかの結果を表示するページを指します。

これを実装するには、どのテクニックやルートを使用する必要がありますか?また、これはセキュリティ関連であるため、何に注意する必要がありますか?

よろしく、キャスパー

役に立ちましたか?

解決

メールを送信する際に、大きなランダムな文字列を生成し、ユーザーIDとリンクの動作を示す情報とともにテーブルに保存します。

次に、 DoSomething.aspx?id = long_string_here へのリンクを記載したメールを送信します。

DoSomething.aspx を記述すると、長い文字列が検索され、ユーザーに実行内容の確認と実行ボタンが表示されます。ログインは不要です。必要に応じて、ユーザーをログインしたままにすることもできます。

アクションの完了後、またはX日ごとに、テーブルから文字列を削除します。

懸念:

  1. 悪意のある人は、ランダムな文字列でページをヒットしようとする場合があります。文字列が十分に長く、十分にランダムであれば、これは重要ではありませんが、ページへのアクセスを制限したり、特定の期間にIPアドレスからのXリクエスト以上を防止したい場合があります。
  2. 積極的なスパムチェッカーは、メール本文のリンクをたどる場合があります。ページにアクセスするだけで、操作が実行されないことを確認してください。ユーザーはボタンをクリックするか、そうでなければPOSTを実行する必要があります。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top