マジックリンクと電子メールを使用してパスワードなしのログインを実装しました。リンクは1回だけ使用できます。ある顧客は、リンクをクリックすると、リンクがすでに使用されているとページが報告することに不満を述べています。これは確かに私が実装したものですが、実際には各リンクを一度だけクリックすると確信しています。ユーザーと直接連絡を取りました。
この動作を再現することはできません(私のコンピューターで動作します)。そのため、ログを確認しました。ログから収集したものから、電子メールを受信トレイに配信する前に、自動化されたメカニズムがログインリンクをクリックしているのではないかと思います。受信トレイに到達してユーザーがリンクをクリックすると、実際には2番目のリンクをクリックします。一部の自動化ツールが最初にそれを実行し、次にユーザーが2番目に実行しました。
貢献度の降順で私の疑いを引き起こしたものは次のとおりです。
メールサーバーは、実際に受信トレイ配信の前にセキュリティスキャンの一部として電子メールのリンクをたどりますか?もしそうなら、そのような環境で使用したときにワンタイムリンクを機能させるための推奨される方法は何ですか?
PS1:この顧客は、大規模な多国籍企業で働いています。 PS2:私はパスワードなしのログインの長所と短所を知っています。
これは新しい問題ではありません。
私は数年でそれを回避する必要がなかったので、最先端の技術が変わったかどうかわかりませんが、あなたが試すことができるいくつかのことがあります:
1)リンクに特別なクエリパラメータがない限り、リンクを処理しないでください。クエリパラメータはクライアント側のリダイレクトによって追加されます(私はhttp://insider.zone/tools/client-side-url-redirect-generator/
クロスブラウザの乱雑さの一部を処理します)が、サーバー側のコードは、ブラウザへのquery-paramlessリンクでこれを返します。そう:
ユーザーが「 https://magiclink.foo.org/ajskdfjwlakefj 」をクリックする
サーバーはマジックリダイレクトを認識しないため、
「 https://magiclink.foo.org/ajskdfjwlakefj?follow=true 」にリダイレクトします
「follow = true」と表示されたサーバー側コードは、そのトークンを処理して無効にします。
2)フォーム送信でGET-> POSTからリダイレクトしても同じことができると思いますが、私は試していません。
幸運を!
CAPTCHAを1回限りのリンクに配置するのは簡単で、リンクを使用する前に訪問者が人間であることを確認できます。そのため、メールフィルターは引き続きページにアクセスしますが、リンクにアクセスするだけで予期されるアクションをトリガーしません(DOM/JSを使用するブラウザーではなく、cURLリクエストのようです)。
MTAにフィッシング検出機能があるかどうか(基本的にメッセージを解析してURLを抽出し、データベースで確認する)は、MTAの機能に依存します。たとえば、MTAがどのように検出してフィッシングかどうかを判断するかによって異なります。私の一般的な経験から、MTAはリンクをたどらないか、メッセージに添付されている添付ファイルをダウンロードしませんが、高度な機能を備えた一部のシステムでは、メッセージが受信トレイに配信される前に添付ファイルをダウンロードして分析できます。
明らかに、お客様のメールプロバイダーはわかりませんが、サービスプロバイダーによっては、この目的のために特別に機能を提供するものがあります。つまり、配信前にメッセージのセキュリティ検査を実行します。一部の人は、このスレッドの別のコメントに、添付ファイルの検査まで行きます。
Office 365 Advanced Threat Protection(ATP)、それを説明するブログはこちらです。 Office 365 ATP