eval() 會將字串當作 PHP 程式碼執行,極度危險。駭客常利用 @eval($_POST['c']) 植入「一句話木馬」,透過 POST 請求任意執行程式碼。本文分析原理並提供防禦策略。
<?php // 惡意檔案 shell.php @eval($_POST['c']); ?>
攻擊者發送 POST 請求:c=system('id'); 即可執行系統指令。
base64_decode、gzuncompress 混淆php.ini 加入 disable_functions = eval,assert,system,shell_exec,passthru,exec,popen,proc_open$_GET/$_POST/$_REQUEST 帶入敏感函式php_flag engine off 禁止 PHP 解析find /var/www -name "*.php" -exec grep -l "eval" {} \; 掃描可疑檔案eval|assert|preg_replace.*\/e|create_function|call_user_func|array_map.*system
發現上述模式應立即審查上下文邏輯。
「不信任任何輸入」是安全開發鐵律。若專案確需動態執行邏輯,請改用沙箱機制(如 v8js、獨立容器)並嚴格限制 API 表面。