eval() によるコード実行
なぜ危険か
eval()は受け取った文字列をPHPコードとして実行します。その一部でもリクエスト由来なら、攻撃者がサーバー上で任意のコードを実行できます。
$result = eval('return ' . $_POST['formula'] . ';');
// Allow only known operations
$ops = [
'add' => fn($a, $b) => $a + $b,
'sub' => fn($a, $b) => $a - $b,
];
$op = $ops[$_POST['op'] ?? ''] ?? null;
$result = $op ? $op((float)$_POST['a'], (float)$_POST['b']) : null;
対策
文字列をコードとして実行しないでください。明示的な処理や対応表に置き換えましょう。
コードを検査する
コードを検査する →
ファイルを貼り付けると、このルールに該当する行をすべて示します。