携帯電話からのセッションID漏洩を防ぐ

http://kaede.to/~canada/doc/sessionid-and-cellphone

  • GETメソッドでセッションを保持するにはURIにセッションIDを含める以外に方法がない
  • Webアプリケーションは「端末IDを詐称したPC」と「正規の携帯電話」を区別する方法を持っていない
  • Referer送出を防ぐ手立てがない
  • 携帯端末にはバグがない(例えばこういうバグ)

この場合、以下の方法を取ることにより、セッションIDの窃取、ひいてはセッションハイジャックを防ぐことができる。

  1. テンプレートなどにおいて、責任が持てるサイト以外には直接リンクを張らない。責任が持てない場合は必ず方策3を取る。
  2. Blogのコメント欄のように自動的に生成されるリンクでは、必ず方策3を採る
  3. 責任が持てないサイトにリンクを張る場合、またはBlogのコメント欄のように外部からリンクを任意に張られるような場合は、セッションIDを含めないURLに一旦誘導し、そこから外部リンクに飛ばすようにする。

「外部のサイトへは、必ずセッションIDを含まないページを経由する」
ことで対処するしかないとのこと。

対処法の注意点としては、

  • 汎用的にしすぎると、悪用される危険性がある。

また、別の問題として、

  • リダイレクトで実装すると、SoftBank のリダイレクト回数制限に引っかかってしまう。

ということで、外部サイトへの誘導は、工夫が必要。