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() 确认文件位于目录内。

扫描我的代码

粘贴文件,PHP Safe 会指出所有符合此规则的代码行。

扫描我的代码 →