パソコンQ&A

OpenPNE はまちちゃん対策

OpenPNEではPOSTもGETも$requests配列に格納され、メイン処理では$requests配列での処理がされる。

たとえば次のアドレスを開くと…
http://localhost/?m=pc&a=page_h_diary_add_confirm&subject=test&body=test&public_flag=public
内容が入力された状態の日記投稿の確認画面が表示されてしまう。
こんな感じで日記の投稿までされると怖い。

はまちちゃんとは

mixiの脆弱性をついて、特定のURLをクリックすると
ぼくはまちちゃん!
こんにちはこんにちは!!
という日記が勝手に投稿された事件を発端とする。

これに対し、mixiは確認ページを設けるようにしたが、 当然 根本的な対策ではないためURLを変更することで再度はまちちゃんは復活した。

CSRF(Cross-Site Request Forgeries)といわれる攻撃

OpenPNEでの対処法は、送信元でmd5(session_id())をPOSTに加え、 送信先でセッションIDとの整合性をとる手法です。

具体的な対策

doに値を送るときには必ずsessidを送らないといけない。

({t_form m=pc a=do_h_diary_add_insert_c_diary})
<input type="hidden" name="sessid" value="({$PHPSESSID})">

sessidはValidateでデフォルトで受信できるようになっている。

後学のために、これ以外の『はまちちゃん対策』の手法
リファラーで発信元をチェック
リファラを送らないブラウザでは使用できなくなる。
『ユーザが知らずにクリック⇒投稿』には万全といわれていたが、Flashではリファラの偽装ができる。
悪意のあるユーザにとっては、リファラは簡単に偽装できる。
チェックコードを利用
POSTするときに文字の書かれた画像を配置し、その文字を入力しないと投稿できないようにする手法。
実装コストがかかる。
ユーザにとって不便。
GETは受けずに、POSTのみにする。
JavaScriptを使えば勝手に投稿はできる。

このページはリンクフリーです。設定などは自己責任で…
Copy Right kikky

kikky.net