我已经在我的专用CentOS服务器上安装了Suhosin。我有大约80个帐户,其中大多数运行Joomla或Wordpress网站。其中一些是过时的,在入侵和注入eval代码的问题上束手无策。
我想启用Suhosin的禁用eval功能,但不破坏站点的功能,这些站点以合法的方式使用eval。我查看了文档,据我所了解,最好的场景是在php.ini中添加这样的内容:
suhosin.executor.disable_eval = On
suhosin.executor.eval.whitelist =
suhosin.executor.eval.blacklist = include, include_once, require, require_once, curl_init, fpassthru, file, base64_encode, base64_decode, mail, exec, system, proc_open, leak, syslog, pfsockopen, shell_exec, ini_restore, symlink, stream_socket_server, proc_nice, popen, proc_get_status, dl, pcntl_exec, pcntl_fork, pcntl_signal, pcntl_waitpid, pcntl_wexitstatus, pcntl_wifexited, pcntl_wifsignaled, pcntl_wifstopped, pcntl_wstopsig, pcntl_wtermsig, socket_accept, socket_bind, socket_connect, socket_create, socket_create_listen, socket_create_pair, link, register_shutdown_function, register_tick_function根据我对文档的理解,黑名单中的任何内容都会被删除和记录,因为白名单是空的。但事实并非如此。似乎所有的东西都被丢弃并记录下来了。
既然做白名单几乎是不可能的,我想问一下,这是否与我对配置的误解有关,还是有些东西不像我想的那样工作。
提前感谢您的帮助。
发布于 2014-07-30 12:44:02
设置
suhosin.executor.disable_eval敬Off。如果它设置为On,就像在您的示例中一样,eval()将被完全禁用(这就是您在日志中看到的)。
顺便说一句,我不认为在PHP应用程序中使用eval()是合法的。应该避免真正使用它的应用程序。我会完全关闭它,除非有什么东西崩溃,然后调查这件事。
发布于 2014-07-31 17:09:43
设置suhosin.executor.disable_eval=On将完全禁用eval()。例如,eval('anything();')将被阻塞。
设置suhosin.executor.eval.blacklist只会阻塞指定的函数。例如。
suhosin.executor.eval.blacklist = base64_decode将阻止eval执行base64_decode。Base64_decode(“.”);
注意:一些常见的PHP代码注入攻击使用构造eval(base64_decode(...))进行混淆。在这种情况下,base64_decode()首先由PHP执行,然后返回值由eval()计算。将base64_decode列在suhosin.executor.eval.blacklist中并不能防止这种攻击。禁用写和执行suhosin.executor.include.allow_writable_files=Off可能是一些自动攻击的可行选择。
https://stackoverflow.com/questions/25037015
复制相似问题