レッスン/チュートリアルを完了するためにユーザーに電子メール通知を送信する Web アプリを開発しています。そのメールのリンクからユーザーを自動的にログインさせる機能を追加しました。この機能は、インターネット上のいくつかのサービスに追加されていますが、最も注目すべきは OkCupid です。
テーブルをセットアップした方法は次のとおりです。
+----+-------------+-------------------+-----------+--------------+----------------------+
| id | key (22) | secret (40) | user_id | action | expires |
+----+-------------+-------------------+-----------+--------------+----------------------+
| 1 | IbQlQW8Dn...| hdC4dXQJUPA0... | 1 | lesson/14 | 2013-06-21 16:28:55 |
+----+-------------+-------------------+-----------+--------------+----------------------+
ユーザーが電子メールを介して次のようなリンクにアクセスすると、次のよう
にkey
なり
ますsecret
。
サーバーはまず、表の日付に基づいて URL の有効期限が切れていないことを確認します。有効期限が切れていない場合、ユーザーは を使用して自動的にログインしuser_id
、列に指定された URL にリダイレクトされaction
ます。セキュリティを強化するためだけに(混乱を防ぐため)、URLに2つの個別の値(key
& )を使用しました。secret
サイト (ビデオ レッスン) の性質上、セキュリティは大きな懸念事項ではありませんが、考慮すべきベスト プラクティスを知りたいです。
- リンクを使用できる回数を制限する必要がありますか?
- 現在、メールが送信されてから 60 時間 (3 日) でリンクの有効期限が切れます。これは下げるべきでしょうか?
- 不正アクセスの明らかな 2 つのリスクには、誰かが電子メールを転送すること、または誰かがユーザーの電子メール アカウントにアクセスすることが含まれます。他に考慮すべきことはありますか?
皆さんの洞察に感謝します。これを StackExchange の別のセクションに移動する必要がある場合は、お知らせください。過去にここで他のベストプラクティスの投稿を見たことがあることは知っています。