ドメインバインドコードでSMSのパスコードのセキュリティを強化する
2020年8月4日
多くのWebサイトやAppでは、より安全にログインができるように、SMSにパスコードを送信するサービスを導入しています。iPhoneでは、セキュリティコードの自動入力(Security Code AutoFill)を使用すると、「QuickType」バーにコードが自動的にコピーされ、コードをすばやく入力することができます。macOS Big Surを実行しているMacでは、Mac Catalystおよび AppKit App上でも自動入力を利用できます。
さらに、iOS 14およびmacOS Big Surでは、コードを特定のWebドメインに関連付けさせることで、さらなる安全なSMSのパスコードを実現しています。
ドメインバインドコードのしくみ
ドメインバインドコードを使用すると、ドメインがWebサイトまたはAppに関連付けられたドメインのいずれかと一致する場合にのみ、コードが自動入力されます。たとえば、「@example.com #123456」で終わるSMSメッセージを受信した場合、 自動入力は、example.comとそのサブドメイン、またはexample.comに関連付けられたAppとやりとりするときに、123456のコードを自動で入力します。しかし、「@example.net #123456」で終わるSMSメッセージを受信した場合、example.comまたはexample.comの関連Appでは、そのコードが自動入力されることはありません。これにより、ユーザーを陥れようとしている人が、ユーザーを騙してフィッシングサイトにワンタイムコードを入力させることは困難になります。
iOSおよびmacOSでは、ドメインバインドコードに加えて通常のSMSのパスコードも表示されますが、みなさまのWebサイトやAppで通常の認証方式を採用している場合でも、ユーザーにより安全な体験を提供するために、自動入力を導入することをお勧めします。メッセージにドメイン情報が含まれていない場合は、関連するすべての項目にコードは自動入力されます。
SMSのドメインバインドコードを設定するには
ドメインバインドコードは、 Webサイトおよび関連付けられたドメインを持つAppの両方で利用できます。
Webサイトでドメインバインドコードを設定する
iOSおよびmacOS Big SurのSafariでは、一般的に、自動入力はすでに導入され自動的に機能するため、追加情報を加える必要がありません。自動入力が機能しない場合は、Webページのテキストフィールドにautocomplete=on-time-code
を追加してください。これにより、Safariはそのフィールドに該当するコードを提供するようになります。
Appでドメインバインドコードを設定する Appに関連付けられたドメインを提供することで、ドメインバインドコードをサポートできます。ドメインでユニバーサルリンクをサポートしている場合、またはAppのログイン画面で自動入力がドメインに保存されているパスワードを提示している場合は、Appはすでにドメインに関連付けられています。
Learn more about supporting associated domains
メモ:Appのログインフローをテストするときに問題が発生した場合は、App内のどのフィールドがワンタイムコードのフィールドであるかを明確にするために、追加して情報を加える必要があります。iOSおよびMac Catalyst Appの場合は、フィールドのtextContentType
プロパティをUITextContentType.oneTimeCode
に設定してください。macOS上のAppKit Appの場合は、NSTextField
にcontentType
プロパティがあり、これをNSTextContentTypeOneTimeCode
に設定する必要があります。
SMSのドメインバインドコードをフォーマットするには
AppまたはWebサイトがドメインバインドコードを受信するように設定したら、バックエンドサービスを介して送信するSMSメッセージに、ドメインとコードの両方を含めた情報を送信します。送信するテキストは次のようなものです。
123456は、サンプルコードです。
@example.com #123456
最後の行を除き、メッセージの全体部分は自由形式です。メッセージは自由にカスタマイズできますが、コードを受け取る人にとってメッセージの意味が明確に伝わるようにします。
メッセージの最後の行では、iPhone、iPad、またはMacの自動入力にドメインとコードをバインドするために必要な情報を提供し、適切なWebサイトまたはAppのコードを提示しています。
ドメインバインドコードを正しく動作させるには、メッセージの最後の行にドメインとコードをバインドするための必要な情報を含め、ドメインとコードが正しい順序で提示されている必要があります。
@example.com
これは最後の行の最初の部分であり、コードを入力するAppまたはWebサイトのドメインが含まれています。ワンタイムコードのセグメントを開始する前に、ドメインの後に必ず半角スペースを1つ入れるようにしてください。
#123456
(123456というコードを表しています)
最後の行の2番目の部分は、#で始まり、AppまたはWebサイトのワンタイムコードを含む文字列が含まれます。
SMSのパスコードを改善する
ドメインバインドコードは、デベロッパが簡単に実装でき、AppやWebサイトを使用するユーザーが理解しやすく、SMSに送信されるコードのセキュリティを強化します。また、W3CのWeb Platform Incubator Community Groupでは、ドメインバインドコードおよびメッセージ形式の開発についてさらに詳しく知ることができます。