2016-05-16 12 views
0

私のNodejs/MongoDBアプリケーションの登録フローについて考えて、ユーザー登録時に電子メールアドレスが既にデータベースに入っているかどうかを確認する必要があるかどうか疑問に思っています。重複した電子メールアドレスを保存する必要がありますか?

私は自分のメールアドレスを確認するために、送信するメールをクリックします。彼らはログインする前にこれを行う必要があります。彼らがこのリンクをクリックすると、そのメールをverifiedというデータベースにマークします。これを念頭に置いて、メールアカウントにアクセスできない場合は、verifiedと表示されないので、誰かが(同じ理由で)同じメールアドレスに登録しても問題ないと思っています。

ただし、電子メールアドレスを使用してデータベース内のユーザーを検索する場合、パフォーマンスに影響するかどうかは疑問です。たとえば、ユーザーは電子メールアドレスを使用してログインします。この場合、emailverifiedの両方にインデックスを作成することをお勧めしますか?

セキュリティ上の欠陥の可能性があるものを見落としましたか?

答えて

0

パフォーマンス面では大したことではないでしょう(おそらく既にemailフィールドにインデックスがあります)が、とにかく許可するべきではないと思います。

1つは、データベースに迷惑メールを追加する可能性があります。第二に、既存のユーザーが間違いなく同じ電子メールアドレスを持つ2番目のアカウントを作成することができ、あらゆる種類の問題が発生する可能性があります。

重複する電子メールアドレスを許可したい特定の理由はありませんが、重複したチェックは実際にはすべて実装に時間がかかりません(emailのユニークなインデックスを考慮してデータベース誰かが既存のアドレスを再登録しようとすると、エラーが発生します)。

+0

ありがとうございます - 電子メールアドレスが確認された場合、電子メールは登録できないため、ユーザーは2番目のアカウントを作成できません。 「ジャンク」問題に関しては、これはいつも問題になると思う。私はまた、特定の時間内に検証されていないアカウントをクリアすることもできます。私のアプローチの1つの理由は、人/マシンが自分のものではない電子メールを登録し、他のユーザーを停止させることを止めるということです。 – tommyd456

+0

@ tommyd456それが懸念されている場合は、登録済みでまだ確認されていない「保留中の」アドレスを登録しようとしている人に、確認メールを再度送信することを許可することができます。 – robertklep

+0

はい、それは私の質問で '検証された'の意味です。だから、たくさんのユーザーにパフォーマンスの問題があるとは思わない? – tommyd456

関連する問題