BLOG ENTRY

Script injection(スクリプトインジェクション)脆弱性の対策(PHP)

php

書籍からの情報を元に、Script injection(スクリプトインジェクション)脆弱性の対策方法(PHP)をメモ。





下記1、2、3を並行して行う。

1、出力時にサニタイズ

[PHP]
echo htmlspecialchars($_POST['hogehoge'] , ENT_QUOTES);
[/PHP]



2、リクエスト変数受け取り時変換



数値型しかとらないとわかっている変数については、外部由来のデータを通常変数に代入する段階で、
数値型への明示的変換を行う。
[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]



3、型の自由度&最大文字数を減らす



数値型が最善。文字列型であっても最大文字数30文字以内にすれば、攻撃力のあるJSを埋め込めない。







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





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

No related posts.

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

  • type:ピンバック [ ]

    WRITE COMMENT


    (required)


    (required)


    (required)

    MENU

    veltica creative of twitter