2013/03/02(土)土曜日ー。(本当か? これ抜け漏れだらけなんじゃ?)
[セキュリティ] Cookie Monster Bugから地域型JPドメインを守る方法?昨日書いたコードを少し修正しました。>* mySession_start.php/image/mySession_start-0_02-php.txt
、 * form.php/image/form-php.txt
、 * post.php/image/post-php.txt
仕組みの話をすると、フォーム入力画面を表示するときに、攻撃者はCookieを2つまでしか発行できませんし、1つを除いてその他は値が「xxx」であることが必要なので、攻撃者が既知の値のセッションを有効な形で強制できなくなることが期待できます。(…本当かしら?)**[3/3追記]** ウソだった。orz 徳丸さんにご指摘もらいましたが、この方式はCookieのpath指定を使うことで回避されてしまいそうです。 ボツです。 / ただ、自分より浅いドメインのCookieを消す(expireさせる)ことは、今回考えてたような単発のCSRF防止では効果ないとしても、複数画面に渡るセッションの乗っ取りを予防するためには使えるかもしれないので、要研究かしら。。[雑談] いろいろ。
、 * form.php/image/form-php.txt
、 * post.php/image/post-php.txt
仕組みの話をすると、フォーム入力画面を表示するときに、
textileSet-Cookie: PHPSESSID=xxx; path=/; domain=bunkyo.tokyo.jpSet-Cookie: PHPSESSID=xxx; path=/; domain=tokyo.jpSet-Cookie: PHPSESSID=6bj71l1ab5qas2smp82sc3jim5; path=/のような形で、クッキーモンスターバグを逆手に取って、自分より浅いドメインに対して「xxx」という値を、自分自身に対しては通常のセッションIDのCookieを発行します。 例えば、example.bunkyo.tokyo.jpにアプリを置く場合、上記のように3つのCookieを発行します。 これをIEが受け取ると、次のフォーム送信画面に対して以下のようにCookieが送信されます。(正常時)
textileCookie: PHPSESSID=xxx; PHPSESSID=xxx; PHPSESSID=6bj71l1ab5qas2smp82sc3jim5そこで、フォーム送信画面で、セッションCookieが3つあり、そのうち2つの値が「xxx」で、残りの1つが「xxx」以外の値であることを確認し、その最後の1つのCookieをセッションIDとみなしてセッションを開始します。(それ以外のCookieの組み合わせの場合はエラーとして処理します。) 自分より深いドメインが安全であると仮定すると、
- XMLHttpRequestを使ったCSRF対策 (葉っぱ日記)
- Preventing CSRF Attacks with AJAX and HTTP Headers (Neal Poole)
- hsgw先生のXMLHttpRequestを使ったCSRF対策について (JUMPERZ.NET Blog)
- 【なりすましウイルス】 日航機爆破予告で逮捕状 片山容疑者、運航阻害疑い (MSN産経)
- PC遠隔操作事件のこと。写真は別人 (北日本動物福祉協会 すずらん白書)
- セブン銀ATMにスキミング装置 4カ所、被害報告なし (朝日新聞デジタル)
- ヨドバシ社長が語るネット対抗の意外な“限界” (日経ビジネスオンライン)
- ヤフー社メイヤーCEOの「在宅勤務禁止令」を考える (ニューズウィーク日本版)
- 手足を切るような”大リストラ”が始まる: グローバルエリートは見た! (東洋経済オンライン)
- Googleの検索エンジンが偶然ポエマー(詩人)になると話題に (Pouch[ポーチ])
- ストリートビューで婚約者の浮気現場を目撃 「ズームしてみたら本人だった」 (Pouch)
- 男からみた“結婚できない女”“結婚を避けたい女” 9パターン (LAURIER/ローリエ)
- 超意外!なんと「●●に行くと素敵な出会いがある」と判明 (Menjoy! メンジョイ)