セキュリティ対策ではサニタイズ処理は基本的に利用してはならない処理である。ファイルパスをサニタイズするだけでは対策にならない場合がある。
ファイルへのアクセスを許可する場合、アクセス権限に注意する。強制ブラウズが行えないようにする。
危険なサニタイズ操作
$safe_file_name = str_replace('../', '', $_GET['file']);
このサニタイズではヌル文字や改行文字、制御コード、壊れた文字エンコーディングに対応していないため、ディレクトリトラバーサル以外にヌル文字インジェクション、改行インジェクション、制御コード挿入による不正操作・セキュリティ回避、壊れた文字エンコーディングによるインジェクションなどのリスクを除去・ 緩和できてない。
ファイル名はホワイトリスト方式で確認する。
適合コード
// ハッシュ値のファイル名をチェックする if (strlen($_GET['file']) != 32 || strspn('abcdef1234567890', $_GET['file']) != strlen($_GET['file'])) { throw new Exception('Invalid file name'); } $safe_file_name = $_GET['file'];
例外は設けない方が良い。
[評価例 - 英語表記に統一]
| Rule | Severity | Likelihood | Remediation Cost | Priority | Level |
|---|---|---|---|---|---|
| IDS05-J | medium | unlikely | medium | P4 | L3 |