Suhosin并禁用eval函数


Suhosin and disable eval function

我已经在专用的Centosin服务器上安装了Suhosin。centos6.7+php5.4.41+suhosin0.9.36

我想启用Suhosin的disable-eval函数。我浏览了文档,根据我的理解,最好的方案是在php.ini中添加这个:

[suhosin]
suhosin.executor.eval.blacklist= phpinfo,passthru,exec,system,chroot,scandir,chgrp,chown

但它不会阻止eval执行phpinfo(),<?php eval(phpinfo());?>

真希望有人能指出我的错误。

您的示例执行phpinfo(),然后尝试评估输出。给定您的配置,以下示例将被suhosin阻止:

eval("phpinfo();");

如果适用,请考虑使用白名单而不是黑名单。从安全的角度来看,最好允许一组有限的函数,而不是猜测所有的坏函数。

还要注意,eval本身不是一个函数,disable_functions和friends不能阻止它。Suhosin为此目的提供suhosin.executor.disable_eval

打开php.ini文件并查找disable_functions。写入/启用要禁用的功能。例如:disable_functions=passthru,exec,system,popen,eval