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

リクエストデータへの extract()

深刻度: 高 CWE-621 OWASP A03:2021 Injection rule: extract

なぜ危険か

extract()はリクエストの全フィールドを変数にするため、攻撃者はフォームに項目を一つ足すだけで $is_admin などの変数を上書きできます。

✕ 脆弱なコード
extract($_POST);
if ($is_admin) {
    show_admin_panel();
}
✓ 安全なコード
$name  = trim((string)($_POST['name'] ?? ''));
$email = filter_var($_POST['email'] ?? '', FILTER_VALIDATE_EMAIL);

対策

必要な値だけ個別に取り出しましょう。extract() は変数の上書きを許します。

コードを検査する

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

コードを検査する →