書籍からの情報を元に、セッション変数等を外部から操作する変数汚染攻撃の対策方法(PHP)をメモ。
対策1、2、3、4を並行して実施する。
$_GET、$_POST、$_COOKIE内に、 ” _SESSION ” , ” _GET ” , ” _COOKIE ” など、特定のキーが見つかった時点で処理を中断する。
[PHP]
foreach(array($_GET , $_POST , $_COOKIE) as $arr) {
if (!empty($arr['_SESSION']) || !empty($arr['_COOKIE']) || !empty($arr['_SERVER']) || !empty( $arr['_ENV']) || !empty($arr['_FILES']) || !empty($arr['_POST']) || !empty($arr['_GET']) || !empty($arr['_GLOBALS']))exit;
}
[/PHP]
受け取る可能性のあるリクエスト変数名をピックアップしておき、プログラム先頭でそれ以外のリクエスト変数をすべてunsetする。
$_GET等のスーパーグローバル変数をforeach() や extract()で展開している部分を削除し、$_GET[(index)]といった形式に書き換える。
php.iniの設定でregiste_globalsをoffにする。
詳しいことはPHPサイバーテロの技法に書かれてます。この本はすごくためになりました。著者の方に感謝。
その他14種類の脆弱性についてはこちらのページで一覧確認できます。
[...] 7 => 変数汚染攻撃 , [...]
type:ピンバック [ ]