====== 読込むファイルサイズを検証する ======
ファイルサイズが保証できない場合、ファイルサイズを検証しないと巨大なデータを読み込んでしまう可能性がある。大きなデータには小さなファイルにないリスクが存在する。
* 整数オーバーフロー
* 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 |
===== 関連ガイドライン =====
===== 参考文献 =====