web-dev-qa-db-ja.com

受信する代わりにメールを送信することによるメール検証

送信したメールを追跡することを主な目的とするアプリを持っています。

ほとんどのユーザーのオンボーディングでは、ユーザーにメールで秘密のURLが送信されます。シークレットを返すリンクをクリックして検証します。

別の方法として、秘密のメールアドレスを含むbcc:を含むmailto:リンクを作成する方法があります。例えば[email protected]

とにかくbcc:を実装する予定です。電子メールの読み取りに使用されるAPIに、DKIM/SPF検証に関する情報が含まれていると想定します。

技術的には、リンクをクリックするだけでなく、メールアドレスも検証しますか?

メールにDKIM/SPF情報が含まれていない場合、それは偽造された可能性があるため、メールが検証されていると想定するには不十分です。

ありがとうございました!

3
Michael Cole

特定のユーザーによって送信されたと主張されているメールだけに依存することは、SPFやDKIMの検証を使用しても、送信者を検証するのに十分ではありません。

SPFもDKIMも、そもそも電子メールの送信者を検証しません。彼らはせいぜい、主張されたドメインへのメールの送信が許可されているメールサーバーを使用してメールが送信されたことを確認します-主張されたドメインは、メールヘッダーのFromフィールドのドメイン(つまり、通常は送信者アドレスと見なされます)。 DMARCのみが、メールヘッダーのFromフィールドのドメインを、SMTPダイアログ(SPF)またはDKIM-Signature(DKIM)の要求されたドメインに揃えます。

それでも-これはドメイン部分のみを整列しますが、実際の完全なアドレスは整列しません。したがって、これだけに依存すると、[email protected]は、メールヘッダーのFromフィールドで[email protected] SPFもDKIMもDMARCも文句を言わないでしょう。

それに加えて、ドメインがサービスプロバイダー(Office365、Mailchimpなど)にIPアドレスまたはドメインをSPFポリシーに追加するか、必要なキーを提供することで、名前でメールを送信することを明示的に許可することがよくありますDKIM。これらのサービスプロバイダーは、SPFが提供する粒度に悪影響を与えるすべてのクライアント間で通常共有されるインフラストラクチャを備えており、ドメイン所有者以外の誰かが所有者ドメインでDKIM署名付きメールを送信できることも意味します。

送信者の検証に不十分であることは別にして、クライアントインフラストラクチャにDMARCと少なくとも1つのSPFまたはDKIMが適切に実装されていることも必要です。

6
Steffen Ullrich

2つのアプローチを比較してみましょう。

どちらか:

Mydomain.com/longsecretuniquekeyへのリンクを含むメールを[email protected]に送信し、特定の時間内にそのURLへのリクエストを受信した場合、ユーザーのメールアドレスが検証されたと見なします。

または:

[email protected]にメールを送信し、longsecretuniquekey @ mydomain.comに返信を送信する手順を説明します。特定の時間内にそのアドレス宛のメールを受信した場合は、ユーザーのメールアドレスが検証済みであると見なします。

これら2つのアプローチは、セキュリティの観点からは同等であると思います。

どちらの場合も、誰か(または何か)が[email protected]に送信された電子メールを受信できること、そしてこの誰か/何かが提供されたURL /電子メールに提供されたアドレスにリクエストを送信することを積極的に決定したことを知っています。

どちらの場合も、誰かがメールアドレスの正当な所有者であるか、中間者であるか、または不正なアクセスを得た人物であるかどうかはわかりません。どちらの場合も、それが人間のユーザーなのかボットなのかはわかりません。

電子メールへの返信のアプローチには、いくつかの追加の注意事項があります。主に、不在時の返信、「ユーザーが見つかりません」などの返信から誤った確認を受け取ることがあります。また、双方向の電子メール確認は、誰かが電子メールを盗聴するリスクを高めます。

しかし、それでも適切に実装されれば、ほぼ同等になるはずです。 「あまり安全ではないが、何もないよりはましだ」のように。

1
Guran