カレンダー
<< April 2024 >>
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
最近のエントリー
最近のコメント
最近のトラックバック
カテゴリー
月別アーカイブ
リンク
その他

CSRFが来る来る
明らかにCSRFと思われる書き込みが来る。
仕方ないので、設定を発動してみた。(このgakibloで、唯一、CSRF対策っぽくなるのは、これだけ。完全ではないけどね。)

で、1ヶ月以上前の、エントリーにコメントするには、秘密の質問に答えなきゃいけないよ。

以下、コンピューターチック話。

このブログ作ったときは、botからかなあ、、、という攻撃が多かった。
で、このブログのデフォルトの仕様は、
  comment_update.php?entry=[entry番号]&rand=[パスワード]
にリダイレクトする、というもので、このリダイレクトが、もとの投稿と、
  IPが同じ場合はOK。
  IPが違う場合は、ドメインが同じであればOK。
  OKでない場合は検閲対象。
というもので、これで、当初は、全然はじけてたんだけどね。

CSRF対策という意味では、普通に、ブラウザが、リダイレクトに反応しちゃうので、ダメポー。

実は簡単な改造で、対応できるんだが、
>  comment_update.php?entry=[entry番号]&rand=[パスワード]
> にリダイレクトする
というのをやめて、
  comment_update_confirm.php?entry=[entry番号]
とかに、リダイレクトさせて、
randをポストさせるように、ユーザーにボタンを押させればいいんだけどねえ、、、、これも、コメントしてくれる人に、悪い気がする。

実際、その画面で、ボタンをおさせるための説明がややこしい。
「コメント投稿を受け付けました。すぐに反映させるには、確認ボタンを、押してください。押さない場合は、検閲対象となります。」

いや、、、、わけわからん説明になるもんなあ。

で、CSRFの王道である、コメント投稿画面に、ワンタイムトークン埋め込む方法は、いろんな理由で、やりたくないんだよな。

クッキーで、セッション使って、そのセッションごとに、トークン作るのが簡単だけど、携帯からの書き込みが、すべて引っかかっちゃう(検閲対象になっちゃう)し、
(もちろん、端末台数分のセッション管理するのは、サーバーの負荷になるし)
クッキー使わず、セッションごとじゃないトークン作るのは、もっともっと、サーバーの負荷になるし、、、
レファラー使うのがいいかなあ。これも、ホントのお客さんに申し訳ない気がするしなあ。

で、当面、秘密の質問で対応。一ヶ月以上前のエントリーに答えるには、秘密の質問に答えなきゃいけない。ってふうに、設定しました。

実際問題、CSRFを仕組まれるには、どうやら今のところ、時間がかかるみたい。
1ヶ月以上前のエントリーぐらいの古いエントリーに対するコメントを仕組む、ってのが、彼らの技術的には限界のようだから。
で、一ヶ月おきに、秘密の質問を変えれば、まあ、大丈夫っぽい。

でもこれも今のところ、、、ですが。

**********1時間後、追記***************

apacheのログ見てたら、Reffererも合ってる。
  つまり、コメント投稿画面から、コメントを送信する、を押して来てるように見える。

  可能性1: CSRFで、Reffererを偽造している。
         どっかの、Flashに埋め込んでるのかな?手の込んだことを、、、
  可能性2: CSRFではない。
         これだと、botとしか考えられないな。毎回違うIPから来るので。
         (一連の画面遷移するIPは同じ)
ちなみに、Reffererは、コメント投稿画面だが、そのコメント投稿画面自体を表示させたログが残ってないんで、可能性1が強いなあ。
(昔、Botで来てたときは、ちゃんと、遷移して、来てました。)

コメントする
お名前:

メール:

URL:

コメント:

トラックバック
この記事へのトラックバックURL:
これまでに受信したトラックバックはありません。

処理時間0.015秒