登録時の「メールアドレス使用済み」をデフォルトで非表示に

背景

現在のデフォルト設定では、すでに登録されているメールアドレスでアカウントにサインアップしようとすると、サインアップフォームにその旨が表示されます。

このデフォルト設定を変更し、この情報を提供しないようにします。代わりに、メールアドレスがすでに登録されているかどうかにかかわらず、サインアップフォームは以下のようになります。

これはパスワードリセットにも同様に影響します。設定が無効になっている場合、フォームはメールアドレスがシステムに存在するというフィードバックを即座に提供します。

設定が有効になっている場合、その情報は開示されません。

なぜ変更するのか?

悪意のある攻撃者は、このフィードバックを使用してアカウント列挙を実行し、このフォーラムで特定のユーザーが存在するかどうかを知ることができます。これにより、それらのユーザーをフィッシングの標的にすることができます。

合法的なユーザーに悪影響はありませんか?

ここでは、ユーザーがすでにアカウントを持っていることを忘れて、同じメールアドレスでサインアップまたはパスワードリセットを試みるケースが考えられますが、これは比較的まれなケースです。しかし、その場合でも、すでにアカウントを持っていることを知らせるメールが届くだけです。

最終的に、この変更は合法的なユーザーがアカウントにサインアップまたはアクセスする能力に影響しません。

しかし、古いデフォルト設定の方が好きです

この設定を過去に変更したことがある場合、新しいデフォルト設定はカスタム設定を上書きしません。古いデフォルト設定に戻したい場合は、hide_email_address_taken 設定を false に戻すことができます。

注:将来的には、このサイト設定を管理者の設定ページから非表示にすることを検討しています

「いいね!」 10

ユーザーがサインアップに使用したメールアドレスを誤って覚えている場合はどうなりますか?

たとえば、ユーザーが example@gmail.com でサインアップしたと思っているが、実際には example@yahoo.com でサインアップしていたとします。彼らは example@gmail.com というメールアドレスを提供してパスワードのリセットを試みますが、そのメールアドレスのアカウントは存在しません。

ted@discourse.org と一致するアカウントがある場合、まもなくパスワードのリセット方法を説明するメールが届きます。

この場合、ユーザーが単にメールを受信しなかった場合、間違ったメールアドレスを提供したことに気づかず、いつ/または別のメールアドレスで再度試行すべきかわからなくなります。

代わりに、メッセージは「まもなくパスワードのリセット方法を説明するメールが届きます」と表示され、ユーザーは「example@gmail.com のパスワードリセットがリクエストされましたが、そのメールアドレスのアカウントは存在しません」という説明のメールを受け取るべきです。

これにより、アカウントの列挙はできなくなりますが、ユーザーは間違ったメールアドレスを送信したことを知り、別のものを試すことができるようになります。

「いいね!」 5

このアプローチの問題点は、悪意のある攻撃者が、あなたのインスタンスとやり取りしたことのない、または存在しないメールアドレスにメールを送信させることができることです。

これにより、送信されるメールの数が大幅に増加し、多額の費用が発生する可能性があります。また、ユーザーがスパムを報告する数が大幅に増加し、バウンス率が高くなる可能性があり、Gmailのようなオペレーターがあなたからのメールをブラックリストに登録する原因となる可能性があります。

「いいね!」 5

攻撃者は、新しいアカウントを登録するだけで、すでにそれを実行できました。攻撃者が 100,000 件のメールアドレスを知っている場合、100,000 件のアカウントを登録でき、Discourse はそれぞれに確認メールを送信します。各ユーザーはそれをスパムとして報告できます。

存在しないアカウントのメールアドレスに、「パスワードのリセットができません。アカウントが存在しません」というメールを送信しても、その攻撃は容易にも困難にもなりません。

この攻撃はほとんどのサイトにとって問題ではありませんが、心配な場合は、攻撃者のコストを増加させる Discourse hCaptcha プラグイン を使用する必要があります。(Meta はそれを使用していません。Discourse でホストされているほとんどのフォーラムはそれを使用していません。)

Discourse が「パスワードのリセットができません。アカウントが存在しません」というメールを、存在しないアカウントのメールアドレスに送信するという私の提案を受け入れる場合、hCaptcha プラグインがサインアップフォームだけでなく、パスワードリセットフォームでも機能するようにすることが理にかなっていると思います。(私は自分で hCaptcha を使用する必要はありません。)

「いいね!」 3

はい、それは有効です。私はそのケース自体についてのみ考えており、すでに可能であり、実際には防止することが完全に非現実的である他の領域を考慮していませんでした。

そうではないのでしょうか?

  1. パスワードを忘れ、このサイトにアクセスしたい。正しいと思うメールアドレスを入力する。
  2. パスワードリセットリンクが届かない。

これで、次の2つの選択肢のどちらかが自動的にわかります。1つは、間違ったメールアドレスを入力したか、2つ目は、サイトが正しく機能していないかです。

私の選択肢は次のようになります。別のメールアドレスを試すか、サイトの管理者に連絡しようとするかです。

あなたの提案では、アカウントが存在しないことを知らせるメールが届きます。選択肢は別のメールアドレスを試すか、サイトの管理者に連絡しようとするかです。これは、追加の手順なしで同じエンドポイントです。

「いいね!」 1

しかし…ほとんどの普通のユーザーはそうは考えませんし、そもそも考えません。

「いいね!」 1