如何禁用php eval

本文介绍了如何通过Suhosin安全补丁禁用PHP中的eval函数,包括静态安装和动态扩展的方法,以及如何在特定业务场景下允许eval的使用。


如何禁用php eval

 

php.ini中这样设置disable_functions =eval是无法禁用eval的,根据php手册说明,eval是一个语言构造器而不是一个函数。

如果要禁用eval,则需要第三方扩展,使用Suhosin

Suhosin是朝鲜语守护神的音译,是一个专门的安全小组开发的专门针对php进行安全加固的补丁程 序,已经进入freebsd gentooports系统。效果很好的。

Suhosinphp增强型安全补丁,可以编译到静态内核中,也可以编译成php动态扩展。我个人强烈你建议静态联编。下面的以下先说静态安装步骤。当然你也可以在安装php后将它编译成php的动态扩展。

# cd /usr/local/src

# wgethttp://cn.php.net/get/php-5.2.5.tar.gz/from/this/mirror

wget http://www.hardened-php.net/suhosin/_media/suhosin-patch-5.2.5-0.9.6.2.patch.gz//从官方下载补丁

# tar zxvf php-5.2.5.tar.gz

# gunzip suhosin-patch-5.2.5-0.9.6.2.patch.gz // 解压补丁

# cd php-5.2.5

# patch -p 1 -i ../suhosin-patch-5.2.5-0.9.6.2.patch // php打上补丁

# ./buildconf --force //一定要执行这一步。

# CHOST="i686-pc-linux-gnu" CFLAGS="-O3-msse2 -mmmx -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe-fomit-frame-pointer" CXXFLAGS="-O3 -msse2 -mmmx -mfpmath=sse-funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer"./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs--with-zlib-dir --with-bz2 --with-tiff-dir --with-libxml-dir=/usr/local/libxml2--with-gd=/usr/local/gd2 --with-freetype-dir --with-jpeg-dir --with-png-dir--with-ttf --enable-mbstring --with-mysql=/usr/local/mysql--with-mysqli=/usr/local/mysql/bin/mysql_config --with-config-file-path=/etc--with-iconv --disable-ipv6 --enable-static --enable-maintainer-zts--enable-memory-limit --enable-zend-multibyte --enable-sockets --enable-soap--enable-suhosin // 配置选项

# make

# make install

重启apachectl,查看phpinfo信息,会出现

This server is protected with the Suhosin Patch 0.9.6.2

Copyright (c) 2006 Hardened-PHP Project

等许多Suhosin信息那么你就成功了。呵呵。

在这里也顺便说一下将suhosin安装成为php的动态扩展的方法。

wget http://download.suhosin.org/suhosin-0.9.23.tgz

tar zxvfsuhosin-0.9.23.tgz

cd suhosin-0.9.23

/usr/local/php/bin/phpize //这一步不能省

./configure --with-php-config=/usr/local/php/bin/php-config//必须在这儿注明php-config所在的绝对路径。

make

make install

会提示编译的模块存在的目录,记住它。

Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/

然后在php.ini中增加一行下列语句。

extension=suhosin.so

suhosin.executor.disable_eval = on

如果对于部分业务需要运行eval咋办?如果是 PHP 5.3+ CGI/FastCGI 方式运行,可以这么改 php.ini,则可以破例使用  eval
操作方法:

suhosin.executor.disable_eval = on

[PATH=/htdocs/www/ex1/]

suhosin.executor.disable_eval = off

最后重启php-fpm 即可!

php.ini中这样设置disable_functions =eval是无法禁用eval的,根据php手册说明,eval是一个语言构造器而不是一个函数。 如果要禁用eval,则需要第三方扩展,使用Suhosin Suhosin是朝鲜语守护神的音译,是一个专门的安全小组开发的专门针对php进行安全加固的补丁程 序,已经进入freebsd gentooports系统。效果很好的。 Suhosinphp增强型安全补丁,可以编译到静态内核中,也可以编译成php动态扩展。我个人强烈你建议静态联编。下面的以下先说静态安装步骤。当然你也可以在安装php后将它编译成php的动态扩展。 如果对于部分业务需要运行eval咋办?如果是 PHP 5.3+ CGI/FastCGI 方式运行,可以这么改 php.ini,则可以破例使用  eval 操作方法: 最后重启php-fpm 即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值