BLOG ENTRY

eval利用攻撃の対策(PHP)

php

書籍からの情報を元に、関数eval()およびその応用関数に悪意あるリクエストを潜り込ませて任意のPHPコードを実行するeval攻撃の対策方法(PHP)をメモ。







対策1、2、3を並行して実施する。



1、ホワイトリスト法

[PHP]
if(!empty($_GET['high_light']) && strstr($text , $_GET['highlight'])) {
$text = substr(preg_replace('/ \>/.*\/esU’ , “str_replace(‘”.$_GET['highlight'].”‘ , “.$_GET['highlight'].”‘ , ‘\\0′)” , “>$text<") , 1 , -1);
}
[/PHP]



2、preg_replace_callback()への置き換え



preg_replace()の ‘ e ‘ 修飾子ではなく、preg_replace_callback()を使うように書き換える。
[PHP]
if(!empty($_GET['highlight'])) {
$text = substr(preg_replace_callback('/\>.*\$text<") , 1 , -1);
}
function make_highlight($matchs) {
return str_replace($_GET['highlight'] , '‘.$_GET['highlight'].’‘ , $matchs[0]);
}
[/PHP]



3、コールバック関数ホワイトリスト法



コールバック関数がリクエスト変数から決まる場合、あらかじめ用意した配列内に存在するものだけに限る。
[PHP]
if(!in_array($filter_func , array('make_highlight' , 'make_plaintext')))exit;
function = call_user_func($filter_func , $from , $to , $string);
[/PHP]



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




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

No related posts.

  • name:PHPで脆弱性の少ないセキュアなアプリを作るために実装時に意識すること | Web&MUSICブログ QUALL
  • date:2008/04/26
  • [...] 10 => eval利用攻撃 , [...]

  • type:ピンバック [ ]

    WRITE COMMENT


    (required)


    (required)


    (required)

    MENU

    veltica creative of twitter