web-dev-qa-db-ja.com

ログインがメールの場合、正規化/小文字にすべきですか?

今日、多くのサイトにはユーザー名がなく、単に「ログイン用メール」があります。

ユーザーが[email protected]としてアカウントを開き、[email protected]を使用してログインしようとしている場合-このログインをtrueとして受け入れますか?保存して検証する前に、メールを小文字に変換する必要がありますか?

25
ripper234

はい、ログインとして受け入れる必要がありますが、データベース内の一致の問題を除外し、意図しない重複がないようにするには、内部的に小文字にしてください。ユーザーがタイプミスをしたり、単に[email protected]と書いたりする場合は、先に進みましょう。許可しなくても影響はありません。 :-)

Gmailも同様のことを行います。でメールアドレスを登録できます。その中で、Gmailは内部のメールアドレスについてはそれを無視します。したがって、Firstname.Surname @ gmail.comを取得できます。これは、FirstnameSurname @ gmail.comと実質的に同じメールアドレスです。 2004年にGmailがリリースされたとき、これはメールサービスの特にユーザーフレンドリーな機能であり、競合サービスのいくつかはまだ自分で実装していないことがわかりました。

ここで重要な教訓は、内部アプリケーションアーキテクチャがエンドユーザーに何らかの形でメリットをもたらさない限り、それがエンドユーザーに表面化しないようにすることです。 非表示にしておくことができる場合は、それを実行してください。

編集:大文字と小文字の区別について、ここに About.comのコメント

しかし、ケースは通常問題ではありません

電子メールアドレスの大文字と小文字の区別は、多くの混乱、相互運用性の問題、および広範な頭痛の種になる可能性があるため、電子メールアドレスを正しい大文字と小文字で入力するよう要求するのは愚かなことです。 ほとんどのメールサービスまたはISPは大文字と小文字を区別するメールアドレスを強制しません。受信者のメールアドレスが正しく入力されていないメッセージを返します(すべて大文字など)。 。

この意味は

  • メッセージを送信するときに、通常、どのような場合に電子メールアドレスを入力するかは重要ではありません(ただし、受信者から大文字と小文字が区別される場合は、保持してください)。
  • また、混乱を避けるために、新しいメールアドレスを作成するときは常に小文字のみを使用する必要があります。

したがって、電子メールRFCに準拠したい場合は、私のアドバイスに従ってはいけません。システムで使用される電子メールアドレス(たとえば、会社のイントラネット)がわかっている場合は、すべて小文字にします。

19
Rahul

この質問のように聞こえても結果はまちまちです。事実上の標準は、ローカルメールボックスを大文字と小文字を区別しないものとして扱うことですが、 公式標準 は大文字と小文字を区別します(公式の標準でさえ、事実上の標準について言及しています)。

他の人が指摘したように、Steve @ example.comと[email protected]は2人の異なる人物であり、どちらもあなたのサイトを使用したいと考えているpossibleです。しかし、その一方で、Steve @ example.comと[email protected]が実際に同じ人物である可能性ははるかに高くなります。ある方法で別の方法で入力した場合、別の方法で別の方法で入力した場合は、おそらくどちらの方法でも入力できるようにする必要があります。

両方を追跡することをお勧めします。大文字と小文字を区別しないことは非常に広く使用されているため、サインアップ用の電子メールアドレスを取得し、小文字にしてください。ユーザーがログインしようとするときはいつでも、ユーザーが存在するかどうかを確認するために、比較のために小文字に変換します。 サインアップしてサインインする限り、大文字と小文字を区別しない比較を行います。その人が[email protected]としてサインアップした場合でも、後で[email protected]または[email protected]でサインインできるようにしたい。

ただし、大文字と小文字を区別して、彼らが登録したメールアドレスも追跡する必要があります。 メールを送信するときは、必ず元の大文字と小文字で送信してください。これにより、メールサーバーでメールを処理できるようになります。する必要がある。したがって、その人が常に[email protected]でサイトにサインインしている場合でも、Steve @ example.comとしてサインアップした場合は、安全のために常に[email protected]にメールを送信します。

いつの日か、事実上の標準と公式の標準はうまくいけば同じになるでしょう。この問題に対処しなければならないのは残念です。

関連するいくつかの補足事項。 ドメイン名(「@」記号の後)は常に大文字と小文字を区別しないと見なされるため、常に同じように扱うことができます。 2番目に、大文字と小文字の区別の問題と同じくらい重要ですまた、メールアドレスで許可されているすべての記号を許可することを含め、サイトがすべての正当なメールアドレスを確実に受け入れるようにしたい。正式なメールアドレスを入力するユーザーにとって、システムに「文字「!」」と言わせるだけで本当にイライラします。許可されていません。」規格は何が許可されているかを定義していますが、 Wikipedia もこれの良い要約を持っています。

10
rbwhitaker

いいえ。 メールアドレスのローカル部分は大文字と小文字を区別する必要があります。

たとえば、[email protected][email protected]は異なるメールボックスを指定できます。メールを小文字に変換すると、[email protected]はサイトを使用できなくなります。また、[email protected]メールボックスが存在する場合は、サイトから[email protected]に送信されたはずのメールを受信します。

[email protected]がアカウントを作成した後、同じメールサービスで[email protected]メールアカウントを作成し、パスワードリセットを使用してサイトで[email protected]のアカウントを使用することができます。

5
Artur Gaspar

いいえ

私は決してそうしません-すべてのメールIDが大文字小文字を区別しないままであるとは言えません。何かが変わった場合、ある時点で、ロジックとそれに依存する他の何かを作り直す必要があるかもしれません。

0
Kris