間違いだらけの「かんたんログイン」実装法(1/3) − @IT(情報元のブックマーク数)

まだまだ使われている契約者固有IDによる簡単ログイン、徳丸先生の簡単ログインの間違えている実装方法と、正しい実装方法の記事

かんたんログインとは、携帯電話の「契約者固有ID」を用いたログイン手法です。
第1回で説明したように、携帯電話のブラウザのリクエストヘッダには契約者固有IDと呼ばれるIDを付けることができます。契約者固有IDは、携帯電話事業者によって詳細は異なりますが、すべての携帯電話事業者が対応しています。

間違いだらけの「かんたんログイン」実装法 (1/3):再考・ケータイWebのセキュリティ(2) - @IT

ここがポイントか。コピペ技術。

そこでインターネットの情報などを参考に、「契約社固有IDを取得して、会員データベースと突き合わせて、登録されている場合はログイン成功と見なす」という以下のスクリプトを作成し、運用を開始しました(注意:この方法には脆弱性があります)。

間違いだらけの「かんたんログイン」実装法 (1/3):再考・ケータイWebのセキュリティ(2) - @IT

イーモバイル端末をつかってのパソコン経由での制限回避

PCにイー・モバイルの端末を接続してダイヤルアップで接続し、EMnetというサービス用のプロキシサーバ経由でアクセスする場合を考えてください。サービス側から見ればこのアクセスは、イー・モバイルEMnetゲートウェイからのリクエストとなります(図2)。すなわち、PCからの接続でもIPアドレス制限を回避してアクセスできてしまうのです。

間違いだらけの「かんたんログイン」実装法 (2/3):再考・ケータイWebのセキュリティ(2) - @IT

最後まで見たら対応方法が書いてあるけど、途中(DNSバインディングあたり)で嫌になったのは内緒。

本稿執筆時点で、かんたんログインを安全に実装するための「必要条件」には以下があります。

  • 携帯電話事業者のゲートウェイからのアクセスのみを受け付ける(IPアドレスチェック)
  • リモートIPアドレスを基にキャリア判定を行う(User-AgentなどHTTPリクエストヘッダで判定してはいけない)
  • 契約者固有IDとしてはiモードID、EZ番号、ユーザーID(ソフトバンク)のみを用いる
  • HTTPSではかんたんログインを受け付けない
  • Hostヘッダのチェックまたは名前ベースのバーチャルホストを設定する
  • ソフトバンクの非公式JavaScript対応端末へ何らかの対処を行う

しかし、これらで「十分条件」になるかは、携帯電話事業者が保証してくれない限り分かりません。いまのところ、そのような安全な方法が提示される見通しはないため、かんたんログインの安全性は非常に危うい状況といえます。

間違いだらけの「かんたんログイン」実装法 (3/3):再考・ケータイWebのセキュリティ(2) - @IT

Cookieを用いた自動ログイン機能については、拙著「体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践」(ソフトバンククリエイティブ、3月1日発売予定)にて詳しく説明しています。この本の中では、携帯電話のセキュリティや自動ログインの話題だけでなく、Webアプリケーションのセキュリティ全般について解説しています。この連載と併せてお読みいただくと安全なケータイWebの構築に役立つと思います。

間違いだらけの「かんたんログイン」実装法 (3/3):再考・ケータイWebのセキュリティ(2) - @IT

screenshot