ユーザーが(もちろん、関連付けられたパスワードで)ログインするためのメインの識別子として電子メールを使用することのセキュリティへの影響について疑問に思っています。通常のユーザー名と同じように扱うことはできますか、または+の部分(例:[email protected])を削除して一意性を比較する前に電子メールアドレスを「サニタイズ」するなど、特別な注意を払う必要がありますか?
私がすぐに考えることができる1つの真の意味は、電子メールがシステムに登録されているかどうか(たとえば、パスワードチェックの失敗など)で公にチェックできないように注意することです。
メールは通常、次の理由からユーザー名としては適切です。
名目上、少なくともメールアドレスの右半分(「@」記号の後のドメイン名)では大文字と小文字が区別されないため、その部分を小文字に正規化する必要があります。これは、有効なドメインであると想定されているため、簡単です名前、したがってASCIIのサブセットに限定されます(注:.NETが インバリアントカルチャ)と呼ぶものを使用するように注意する必要があります 、およびJavaは ルートロケール を条件とします;そうでなければ、コードはトルコで壊れます)。
左側の場合、大文字と小文字の区別は受信サイトによって異なります。ほとんどのサイトでは、その部分も大文字と小文字が区別されません。小文字の正規化を行うのは「合理的」と思われます。これは、特定のサイトで大文字と小文字が区別される可能性が低いためです。 /明確な人々(つまり、[email protected]
および[email protected]
は、2つの異なるボブの有効なアドレスです)。したがって、比較のためにアドレス全体を小文字で正規化することをお勧めします(つまり、どのユーザーについて話しているのかを決定するため)。ただし、ユーザーにメールを送り返したい場合や、ユーザーに show したい場合は、アドレスを「そのまま」保持します(たとえば、「ようこそ」として[email protected] "バナー-ボブは自分の大文字の「B」がかなり好きかもしれません。
「+」記号について:あなたの視点から見ると、それは住所の一部です。この「+」は、各ユーザーが機能的に同等の多数のアドレスを生成する方法として一部のサイトで処理されます。ボブは[email protected]
、[email protected]
、[email protected]
...これらのアドレスのいずれかに送信されたすべての電子メールはボブのメールボックスで終わりますが、ボブの目には、それらはボブがそのようにタイプする別個のアドレスです。 Bob expects 個別と見なされるアドレス。したがって、 "+"の処理は、本当に必要なものによって異なります。
概要:登録時に入力したアドレスを保持し、表示およびメールの送信に「そのまま」使用します。 comparisons (つまり、ログイン時にユーザーのテーブルでユーザーエントリを見つけるなど)の場合は、電子メールを小文字に正規化します(インバリアントカルチャを使用)。
ユーザー名として電子メールを使用することの主なリスクは、ユーザーに連絡する二次的な手段を放棄することです。多くの(ほとんど?)ユーザーは、複数のものに同じパスワードを使用します。ユーザー名とパスワードが危険にさらされており、ユーザー名が電子メールである場合、電子メールアカウントも危険にさらされる可能性があります。 SMSベースの回復システムのようなものを使用しない限り、これはアカウントの回復を非常に困難にする可能性があります。
電子メールアドレスは、以下の理由により、(バンキングなどの非常に機密性の高い機能の場合)ユーザー名としてよくありません。
これはすべて、ユーザーが自分のユーザー名を覚えることができることに対してバランスを取る必要があります。多くのサイトでは、メールアドレスにリンクされたユーザー名送信機能があります。他のユーザーは、ユーザーIDとしてメールを使用することのメリットをすでにカバーしています。
通常のユーザー名と同じように扱うことはできますか、または+の部分を削除して(たとえば、somebody + note @ example.org)、一意性を比較する前に電子メールアドレスを「サニタイズ」するなどの特別な注意を払う必要がありますか?
詳細については、 私はRFCを読むまで電子メールアドレスを検証する方法を知っていました を参照してください。ただし、以下のすべてが有効であるとは思わないため、アドレスのサニタイズは行いません。
電子メールアドレスをユーザー名として使用すると、正しく実装されていなければ sername enumeration になり、任意のユーザー名よりも対象となります-攻撃者は、有効なものを知っている可能性が高いため、ユーザーの公開メールアドレス。ただし、 これは解決可能な問題です 。
アカウントロックアウトDoSは、失敗したログイン試行の繰り返しやパスワードのリセットを電子メールアドレスとIPアドレスの両方で個別にスロットリングすることで軽減できます。
また、アクティベーションメールをクリックするように依頼して、すべての新しいユーザーのメールアドレスを検証する必要があります。これにより、メールアドレスがユーザーのアドレスであり、必要に応じてユーザーが将来アクセスをリセットできるようになります。 パスワードリセットシステムを使用して登録を組み合わせる すると、1石で2羽の鳥を殺すことができます。
ユーザー名としての電子メールは、潜在的なユーザーのかなりのクラスが自分の電子メールを長期間制御することができないため、不適切なアイデアです。 ISPが行き来し、何らかの理由でメールアドレスが使用できなくなったり、使用できなくなったりします。