質問
私は昨日のフォーラムを読んでいて、パスワードリセットリンクと同じように、ユーザーにログインリンクをメールで送信するというアイデアについて議論していたので、パスワードを必要としません。彼らの電子メールアドレスは、同様のリンクを使用してサインアップ時に既に確認されており、原則としてパスワードのリセットリンクとかなり似ていると思います。
プロセス
ユーザーはサイトにアクセスし、ユーザー名を入力すると、5分間有効なログインリンクがメールで送信されます。彼らは電子メールのリンクをクリックし、ログインします。
欠点
利点
考え
ログイントークンは、ブルートフォース攻撃を防ぐために強力かつランダムである必要があり、攻撃の範囲を減らすために何らかの形のユーザーIDを含めることもできます。セキュリティの観点から、上記で指摘できる他の主な利点または欠点はありますか?
ログインまたはパスワードのリセットのために、元のユーザーのIDを確認するために電子メールアドレスに依存している場合、電子メールアカウントの侵害はWebサイトのアカウントの侵害を意味します。したがって、このログインスキームではセキュリティリスクの上昇は見られません。実際、これは基本的にサードパーティの認証サービスを使用するのに似ています。 GMailアカウントを使用してStackExchangeにログインするとします。
このログインスキームをHTTPSの使用、インジェクションの脆弱性の回避などの優れたセキュリティプラクティスと組み合わせると、パスワードベースのログインスキームと同等になります。ここで私が見る唯一の利点は、ユーザーが覚える必要があるパスワードの数が少なくなるということです。もちろん、明らかな欠点は、受信トレイに移動してメッセージを開き、そのWebサイトにログインするたびにリンクをクリックする必要があるという不便さです。
これを使用する予定がある場合は、何らかの理由でユーザーが自分のメールアカウントにアクセスできない場合に備えて、ユーザーが自分のパスワードでログインできるようにするフォールバックオプションを使用することを強くお勧めします。
ユーザーは、自分の電子メールアカウントにアクセスできない、またはアクセスしたくないコンピューターからWebサイトにアクセスする場合があります。このプロセスでは、ユーザーがサイトにアクセスできるコンピューターを制限します。
この方法のセキュリティ面での最大の欠点は、ユーザーの1人に対する標的型攻撃に対する保護がまったくないことです。標的型攻撃ではメールが簡単に傍受される可能性があり、この種の状況から保護する機会はまったくありません。
明らかなセキュリティ上の欠陥に加えて、ユーザビリティに関する大きな懸念があります。あなたのサイトにアクセスするためだけに私のメールにログインすることを私に要求することは本当に迷惑であり、おそらく多くの人々がログインするのを思いとどまらせるでしょう。
スパムや雇用主の変更などにより、ユーザーはメールアドレスを変更しなければならない場合があります。彼らがそのような多くのウェブサイトのメンバーである場合、彼らはこれらのすべてのサイトを覚えて、連絡先メールを更新する必要があります。メールアドレスを忘れると、後でこのサイトにログインできなくなり、メールアドレスを変更できなくなります。
だから私は、パスワードを覚える必要があるか、連絡先メールを更新するためにログインしなければならないサイトを覚えなければならないかのどちらかであるという利点はないと思います。どちらの場合も、すべてのログイン情報を安全に保存できるKeePassのようなツールがあると便利です。
メールアドレスを変更したために、アクセスを要求する人もいるでしょう。次に、管理者はあなたがこの人を信じるかどうかにかかわらず問題に直面します。
最初に完全な資格情報(ユーザー名+パスワード)を入力し、次にトークンリンクを使用して電子メールを送信する必要がある場合、これは良い考えです。これは2段階認証として機能します(あなただけが知っているはずのパスワードを入力してから、あなただけが入力するはずの電子メールを入力してください)。
ただし、1回限りの電子メールパスワードなどを実装する必要があります。このアイデアには多くの欠点があります。
まず、前述のとおり、一部の人々は自分の電子メールアカウントへのアクセスが制限されています。次に、受信トレイに整理/整頓をするのが好きな人もいます。ログインに成功した後、ウェブサイトからすべての電子メールを削除すると、どういうわけか迷惑になる可能性があります。
しかし、これらは使いやすさの欠点にすぎません。セキュリティの観点から、あなたの考えを詳しく見てみましょう。
ユーザーへのスパム行為についてはどうですか?攻撃者がユーザー名/電子メールを知っている場合、ログイン方法を使用して大量の電子メールをユーザーに送信する可能性があります。この状況は、顧客を不快にさせる可能性があります(まあ、私はきっと、Click here to login
は彼らが手に入れたいものではありません:))。あなたの電子メール(これはトークンリンクでメッセージを送信するために使用します)も(大量のトラフィックが原因で)ブラックリストに登録され、他の顧客は別のログイン電子メールを受信できなくなります。
わかりました-No spamming! I'll implement CAPTCHA and allow to send only Nth email in short period of time
。さて、私は答えます-あなたの電子メール、CAPTCHAにアクセスします-あなたのウェブサイトを使いにくくするために他に何がありますか?使いやすさについての話に戻りましょう。短時間でリクエストをブロックすることについて言えば、攻撃者がこの方法を使用して正規ユーザーをブロックし、ユーザーがWebサイトにアクセスするのを防ぐことができることを忘れないでください。
このアイデアが間違っているもう1つの理由は、フィッシングです。 Webサイトが大量の電子メールを送信する場合、顧客はフィッシング攻撃に対してより脆弱になります。ある一般的なユーザーが毎日、あなたのドメインからのリンクをクリックした場合-彼はあなたの銀行からの電子メールほど注意深くあなたからのすべての電子メールを調べないでしょう。攻撃者はあなたのログインポリシーを使用して、スプーフィングされた電子メールを顧客に送信する可能性があります(悪意のあるコンテンツへのリンクなど)。