phpsafe 𝕏 GitHub
公式CA 421DTkQ3TSG3n7F9SkNZj9NxvdFGbypwkctPd2uupump 公式アドレスはこちらのみです。

ユーザー入力によるファイルアクセス

深刻度: 高 CWE-22 OWASP A01:2021 Broken Access Control rule: path

なぜ危険か

../ のような文字列で意図したフォルダを抜け出し、設定ファイルや鍵、ソースコードを読み取られます。

✕ 脆弱なコード
readfile('/var/files/' . $_GET['file']);
✓ 安全なコード
$base = realpath('/var/files');
$path = realpath($base . '/' . basename($_GET['file'] ?? ''));
if ($path === false || !str_starts_with($path, $base . '/')) {
    http_response_code(404);
    exit;
}
readfile($path);

対策

basename() と固定ディレクトリを使い、realpath() で範囲内か確認しましょう。

コードを検査する

ファイルを貼り付けると、このルールに該当する行をすべて示します。

コードを検査する →