
書籍からの情報を元に、CSRF(クロスサイトリクエストフォージェリー)脆弱性の対策方法(PHP)をメモ。
[PHP]
if( $user->isAdmin() && $_GET['delete_ok'] == 1 && strncmp(@$_SERVER['HTTP_REFERER'] , $myuri , strlen($myuri))) {
//処理を行う
}
[/PHP]
フォームを表示する際に、チケット・半券のペアを作り、チケット側をhiddenとして埋め込む。
半券はセッション変数として保存する。実際のPOSTを処理するときにPOSTされたチケットと半券の一致を確認して半券を廃棄する。
[PHP]
if ($user->isAdmin() && $_GET['delete_ok'] == 1 && $myticket->check()) {
//処理を行う
}
[/PHP]
重大な操作の最終確認はGET渡しではなくPOST渡しで行う。
処理の受取先で$_REQUESTは利用しない。
詳しいことはPHPサイバーテロの技法に書かれてます。この本はすごくためになりました。著者の方に感謝。
その他14種類の脆弱性についてはこちらのページで一覧確認できます。
No related posts.
[...] 4 => CSRF , [...]
type:ピンバック [ ]