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()时,一定要注意输入的字符串来源以及内容,避免引起安全问题。