
ヌルバイト攻撃とは、リクエスト文字列に%00(ヌルバイト)を含めることで、バリデーションを通り抜ける攻撃手法。
書籍からの情報を元に、ヌルバイト攻撃の対策方法(PHP)をメモ。
[PHP]
function sanitize($arr) {
if(is_array($arr)) {
return array_map('sanitize' , $arr);
}
return str_replace("\0" , "" , $arr);
}
$_GET = sanitize($_GET);
$_POST = sanitize($_POST);
$_COOKIE = sanitize($_COOKIE);
[/PHP]
ファイル名や外部実行コマンドとしてのセキュリティチェックコード(拡張子チェックなど)の直前に、
ヌルバイトを削除する。
[PHP]
$data_file = str_replace("\0" , "" , $_GET['data_file']);
if(substrt($data_file , -3) == 'dat') {
readfile($data_file);
}
[/PHP]
ファイル指定に階層構造が必要なければ、リクエスト変数の受け取り時点(チェック前)にbasename()を使うことで、Directory Traversal攻撃への対策も同時に処理できる。
[PHP]
$data_file = basename($_GET['data_file']);
[/PHP]
詳しいことはPHPサイバーテロの技法に書かれてます。この本はすごくためになりました。著者の方に感謝。
その他14種類の脆弱性についてはこちらのページで一覧確認できます。
No related posts.
[...] 5 => ヌルバイト攻撃 , [...]
type:ピンバック [ ]