WEB+DB PRESS誌のVol.37に「携帯サイト開発 実践テクニック 2007」という記事が掲載されているのだが、そこにこんな記述があった。
端末認証
登録が必要なサイトの場合,利用する際にはログインが必要です.ID/パスワードを毎回入力するのでは,携帯の場合では特に面倒です.
そこで携帯ならではの認証方法として,現在の端末では取得が容易にできる端末自体の情報(端末ID)を利用します.
(略)
セッション
PCサイトでセッションを使う場合は,通常セッションIDをCookieに保存しますが,携帯ブラウザではCookieにデータを保存することができません.そこで携帯サイトでCookieを使う場合はURLにセッションIDを埋め込むことになります.
セッションIDをGETで渡す
セッションIDをGETで渡す場合は,PHPの設定ファイルを更新するだけでできます.具体的には(略)
携帯サイトでセッションを使うときの注意点
携帯ブラウザの場合,Cookieを使うことができませんので,セッションを使う際はどうしてもURLにセッションIDが含まれてしまいます.URLにセッションIDが含まれる場合はセキュリティに注意する必要があります.
本人以外がセッション付きのURLにアクセスできないようにしましょう.特に検索サービスにクロールされてしまうと問題は深刻です.個人情報が簡単に検索できてしまいます.
そのため,セッションには必ず端末IDを保存しておいて,特定の端末のみアクセスできるようにしておきましょう.(略)セッションに格納されている端末IDと照合することで,違う端末からのアクセスをチェックすることができます.
携帯サイト開発 実践テクニック 2007, 技術評論社 WEB+DB PRESS Vol.37, pp.126-127
おいおい、それは駄目だろう*1。
なぜ「URLにセッションIDが含まれる場合はセキュリティに注意する必要があり」なのかと言えば、Refererによってリンク先にセッションID入りのURLが流出し、流出先サイトの人にセッションハイジャックされてしまうからだ。
一方、「端末ID」とは、たとえばこのサイト「携帯端末の個体識別情報(uid)取得方法」などに書かれているように、単にHTTPのリクエストヘッダに利用者に固有の固定のID文字列が載せられているだけのものだ。
リンク先のWebサイトには、Refererと共に端末IDもリクエストヘッダとして送信されているわけで、セッションID入りURLと端末IDがセットで流出するのだから、当然、同じHTTPリクエストを送るだけの方法でなりすましアクセスされてしまう。
そもそも、「ID/パスワードを毎回入力するのでは携帯の場合では特に面倒です」などといって、端末IDをパスワード代わりにしてはいけない。端末IDは他のサイトにも同じものが送信されるのだから、パスワード代わりになどならない。
こんな基本的なことが携帯業界では未だ常識になっていないようで困ったことだ。
携帯電話Webアプリのセキュリティが怪しいという話はいろいろな人から耳にするが、携帯の世界では秘密保持契約による縛りがあって、皆それらを話せない状態になっているようだ。その結果として、脆弱性の実態が明らかにならないばかりか、正しい実装方法の普及が進まない。
携帯電話の世界は通信事業者の私的なネットワークだと見なせば、秘密主義によるセキュリティ確保という選択も、事業者の自由だと言われればまあそうなのだろう。だが、その場合は、セキュリティ事故について通信事業者が責任を負うことになるのではないか。
逆に責任を負うつもりがないのであれば、セキュリティを確保するのに必要な情報を通信事業者が公式情報として明確に公表しておくか、さもなくば、それらの情報が秘密保持契約における秘密に当たらないことを契約者に対して明らかにするべきだろう。
*1 キャリアのIPアドレスからのアクセスであることの確認の話は書かれていない。(IPアドレスを確認すればそれで本当になりすまし不可能にできるのかは知らない。それは携帯電話事業者が公式に示すべきことだ。)
携帯電話からのセッションIDの漏洩〜セッションハイジャックを防ぐ方策を記述する。
...
高木浩光@自宅の日記 - 携帯電話向けWebアプリの脆弱性事情はどうなっているのかに、高木浩光氏が携帯電話向けWebアプリケーションの安全性についてコメントされておられる。 なぜ「URLにセッションIDが含まれる場合はセキュリティに注意する必要があり」なのかと言えば、..
高木浩光@自宅の日記 - 携帯電話向けWebアプリの脆弱性事情はどうなっているのか ということで、関わっている者から実情を少しばかり書いてみたいと思います。最近はほとんど勝手サイトにしか関わっていないのであれなんですが。 結論から言うとわりとボロい感じです。..
巡回サイトの一つである高木浩光@自宅の日記で以下のようなエントリーがあった。 高木浩光@自宅の日記 - 携帯電話向けWebアプリの脆弱性事情はどうなっているのか ここではいつもの高木氏の口調で、「携帯向けWEBアプリ開発では未だにGETパラメータでセッションIDを渡..
高木さんの「素朴な」疑問に対して、果たして携帯Webアプリでセッションは安全かの議論が続いている。 携帯電話向けWebアプリの脆弱性事情はどうなっているのか 珍しく間違った批判をしている高木先生 携帯電話からセッションIDの漏洩を防ぐ Cookieが使えない機種も多いの..
192 http://kaede.to/~canada/doc/ipaddress-of-cellphone 40 http://takagi-hiromitsu.jp/diary/20070223.html 32 http://d.hatena.ne.jp/odz/20070227/1172626725 28 http://mkt5126.seesaa.net/ 11 http://tdiary.seesaa.net/article/34706954.html 9 http://d.hatena....
ケータイWebアプリの脆弱性問題は、私の専門分野であるので、もう少し突っ込んでみたいと思う。 高木浩光氏の高木浩光@自宅の日記 - 携帯電話向けWebアプリの脆弱性事情はどうなっているのか 携帯電話Webアプリのセキュリティが怪しいという話はいろいろな人から耳にす..
参考URL: php&ethnaで携帯サイトを作る http://blog.mynet.co.jp/hirashima/2008/01/mobile_web_php_ethna_html.html 携帯端末の個体識別情報(uid)取得方法 http://www.limy.org/program/mobile/uid.html UserAgent 別にテンプレートを切り替える方法 http://tech.mu...
だが、どうもケータイWebのサイト運営者たちは、どういう遠慮があるのか知らないが、キャリア様には何ひとつ要求できないらしい。「IPアドレス帯域」の表はHTMLで提供されているわけで、これがXMLでデータ化されるなり、Web APIで提供されるようになれば、業界は皆ハッピ..
最近購入したPHP×携帯サイト 実践アプリケーション集を読んでいて妙な感じがしたので、この感覚はなんだろうと思っていたら、その理由に気づいた。本書に出てくるアプリケーションは、PHPのセッション管理機構を使っていないのだ。そんな馬鹿なと思ったが、目次にも索引
高木浩光@自宅の日記 - 携帯電話向けWebアプリの脆弱性事情はどうなっているのか