====== 読込むファイルサイズを検証する ====== ファイルサイズが保証できない場合、ファイルサイズを検証しないと巨大なデータを読み込んでしまう可能性がある。大きなデータには小さなファイルにないリスクが存在する。 * 整数オーバーフロー * DoS ===== 非適合コード例 ===== **ファイルサイズを検証しない** $data = file_get_contents('/path/to/file'); // $dataのサイズは不定。メモリ制限がある場合、プログラムの実行が意図せず停止。 ===== 適合コード例 ===== **最大のファイルサイズを指定する** $data = file_get_contents('/path/to/file', false, null, 0, 4096); // $dataのサイズは最大でも4096バイト **最大のファイルサイズを確認する** if (filesize('/path/to/file') > 4096)) { throw new Exception('Too large file'); } $data = file_get_contents('/path/to/file'); // $dataのサイズは最大でも4096バイト ===== 例外 ===== ファイルサイズが許容可能であると保証できる場合、ファイルサイズチェックを省略できる。 ===== リスク評価 ===== [ルール/推奨事項のリスク評価] [評価例 - 英語表記に統一] ^ Rule ^ Severity ^ Likelihood ^ Remediation Cost ^ Priority ^ Level ^ | IDS05-J | medium | unlikely | medium | P4 | L3 | ===== 関連ガイドライン ===== ===== 参考文献 =====