BLOG ENTRY

CSRF(クロスサイトリクエストフォージェリー)脆弱性の対策(PHP)

php
書籍からの情報を元に、CSRF(クロスサイトリクエストフォージェリー)脆弱性の対策方法(PHP)をメモ。



1、リファラーチェック法

[PHP]
if( $user->isAdmin() && $_GET['delete_ok'] == 1 && strncmp(@$_SERVER['HTTP_REFERER'] , $myuri , strlen($myuri))) {
//処理を行う
}
[/PHP]



2、ワンタイムチケット法



フォームを表示する際に、チケット・半券のペアを作り、チケット側をhiddenとして埋め込む。
半券はセッション変数として保存する。実際のPOSTを処理するときにPOSTされたチケットと半券の一致を確認して半券を廃棄する。
[PHP]
if ($user->isAdmin() && $_GET['delete_ok'] == 1 && $myticket->check()) {
//処理を行う
}
[/PHP]



3、GETではなくPOSTを使う



重大な操作の最終確認はGET渡しではなくPOST渡しで行う。
処理の受取先で$_REQUESTは利用しない。





詳しいことはPHPサイバーテロの技法に書かれてます。この本はすごくためになりました。著者の方に感謝。


その他14種類の脆弱性についてはこちらのページで一覧確認できます。

No related posts.

WRITE COMMENT


(required)


(required)


(required)

MENU