在php.ini中這樣設置disable_functions =eval是沒法禁用eval的,根據php手冊說明,eval是一個語言構造器而不是一個函數。 php
若是要禁用eval,則須要第三方擴展,使用Suhosin。 mysql
Suhosin是朝鮮語「守護神」的音譯,是一個專門的安全小組開發的專門針對php進行安全加固的補丁程 序,已經進入freebsd gentoo的ports系統。效果很好的。 linux
Suhosin是php加強型安全補丁,能夠編譯到靜態內核中,也能夠編譯成php動態擴展。我我的強烈你建議靜態聯編。下面的如下先說靜態安裝步驟。固然你也能夠在安裝php後將它編譯成php的動態擴展。 sql
# cd /usr/local/src # wget http://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
操做方法: apache
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 gentoo的ports系統。效果很好的。 Suhosin是php加強型安全補丁,能夠編譯到靜態內核中,也能夠編譯成php動態擴展。我我的強烈你建議靜態聯編。下面的如下先說靜態安裝步驟。當 然你也能夠在安裝php後將它編譯成php的動態擴展。 若是對於部分業務須要運行eval咋辦?若是是 PHP 5.3+ 且 CGI/FastCGI 方式運行,能夠這麼改 php.ini,則能夠破例使用 eval 操做方法: 最後重啓php-fpm 便可!