php eval() 是php的一種內置函數,它可以將字符串作為php代碼執行,如果在使用時不小心會導致安全隱患。
例如如果有如下代碼:
$a = "echo 'hello world';";
eval($a);
執行后結果為:
hello world
但是如果將$a變量改為以下代碼:
$a = "echo shell_exec('ls /');";
eval($a);
那么會在當前服務器上執行命令ls /
,這樣就會有安全隱患。
另外,如果在使用eval()時將用戶輸入的字符串作為參數,這就會引起一個“代碼注入”的問題。例如:
$a = $_POST['val']; // 用戶輸入的字符串為 "echo 'hello world';"
eval($a);
但是如果用戶輸入的字符串為:
"echo shell_exec('ls /');"
那么也會執行命令ls /
,這樣就不安全了。
因此,在使用php eval()時,一定要注意輸入的字符串來源以及內容,避免引起安全問題。