2011-07-06 10 views
2

私は、ユーザがアカウントを作成し、サイトのメッセージングシステム(基本的な電子メールシステム)を使用してお互いにメッセージを送信できるサイトを構築しています。ユーザーAが別のユーザーBからメッセージを受信した場合、そのユーザーの電子メールアドレスを使用してユーザーAに自動的に通知します。さらに、このメッセージにアクセスするために、ユーザーのログイン資格情報をWebサイトに入力しないようにUser-Aを保存したいと思います。セキュリティ上のリスク:GETパラメータによる自動ログイン

User-Aに電子メールを自動的に送信する特別なリンクを電子メールで送信することは悪い考えですか?たとえば、「www.domain.com/?message_id=1 & hash = abc123」をクリックしてください(has-valueを使用して、ユーザーAのアカウントに自動的にログインし、特定のメッセージを表示できます)。

電子メールには、User-Bが送信したメッセージが既に含まれています。ユーザーAは返信するためにはサイトに行く必要があります。

私の前提は、このリンクが安全であるということです。ユーザAに電子メールで直接送信されるため、電子メールが保護されている必要があります。さらに、ハッシュを特定の期間または最初のクリックなどの後にのみ有効にすることができます。

+0

通常、電子メールはプレーンテキストで送信されるので、電子メールに入れたものは絶対に「安全」なものとして扱うことはできません。 –

+0

Flimzyの提案についてどう思いますか?それはクッキーが必要です。 – StackOverflowNewbie

+0

まだログインしていない場合は、適切なCookieを使用してハッシュURLをワンタイムログインページに誘導するという考えに同意します。このようにして、悪意のある人が電子メールからリンクを渡った場合、有効なログインCookie(またはユーザ名/パスワード)なしでログインすることはできません。もちろん、これを安全にするには、すべてのトラフィックを 'https:// 'にする必要があります。そうしないと、クッキーもネットワーク上で暗号化されなくなります(メールと同じ方法で盗まれる可能性があります)。 –

答えて

2

このようなことのための通常の習慣は、ユーザーが最初にこれらのリンクの1つをクリックします。この認証ページでは、ユーザーが完全な資格情報(ユーザー名、パスワードなど)を入力する必要があり、信頼できるコンピュータまたは恒久的なコンピュータから接続しているかどうかを確認します。彼らが「はい」と答えると、ブラウザにCookieが保存され、ブラウザがそのユーザーのものであるとすでに確認されていることをアプリに知らせることができます。

内部的には、そのCookieのIDとユーザーのIDを保存する必要があります。これにより、Cookieがユーザーと一致したことを確認できるようになります。

登録プロセスで、ユーザーの登録済みメールアドレスに別のメールを送信し、ブラウザの登録に使用する必要がある魔法のトークンを送信することもできます。これにより、第三者が電子メールを盗んだり、パスワードを推測することができなくなります。もちろん、メールボックスへのライブアクセス権を持つ攻撃者から保護することはできません。

関連する問題