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

preg_replace の /e 修飾子

深刻度: 致命的 CWE-95 OWASP A03:2021 Injection rule: preg_e

なぜ危険か

/e修飾子は置換文字列をPHPコードとして実行していました。PHP 7で削除されたため、使い続けていると古いサーバーでは危険で、新しいサーバーでは動きません。

✕ 脆弱なコード
$out = preg_replace('/(\w+)/e', 'strtoupper("$1")', $text);
✓ 安全なコード
$out = preg_replace_callback('/(\w+)/', fn($m) => strtoupper($m[1]), $text);

対策

/e はコードを実行します。preg_replace_callback() を使いましょう。

コードを検査する

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

コードを検査する →