書籍からの情報を元に、SQL injection(SQLインジェクション)脆弱性の対策方法(PHP)をメモ。
[PHP]
$hogehoge2 = addslahes($hogehoge);
mysql_query("SELECT * FROM TABLE名 WHERE COLUMN is '$hogehoge2'");
[/PHP]
数値型しかとらないとわかっている変数については、外部由来のデータを通常変数に代入する段階で、
数値型への明示的変換を行う。
[PHP]
$amount = intval(@$_POST['amount']);
$fnumber = doubleval(substr(@$exif["ApertureFNUmber"] , 2));
[/PHP]
文字列型の場合、ブラックリスト法は十分に有効
[PHP]
$type = strtr(@$_FILES['upfile']['type'] , "\0\r\n<>‘\”" , ” “);
[/PHP]
ファイル名・パス名など、利用される文字種が制限できる状況であれば、ホワイトリスト法が利用可能。
※ただし、Directory Traversal対策は別途必要。
[PHP]
if(preg_match('#[^0-9a-zA-Z./_-]#' , $mypath))exit ;
[/PHP]
詳しいことはPHPサイバーテロの技法に書かれてます。この本はすごくためになりました。著者の方に感謝。
その他14種類の脆弱性についてはこちらのページで一覧確認できます。
No related posts.
[...] 2 => Script Insertion , [...]
type:ピンバック [ ]