Nginx+PHP防webshell跨站,跨目录的安全设置,多种方式,适合php5.3以上

Nginx+PHP防webshell跨站,跨目录的安全设置,多种方式,适合php5.3以上
方法1:在Nginx配配置文件server{ }中加入:

fastcgi_param PHP_ADMIN_VALUE “[参数名]=[值]“;
例如:

#fastcgi_param PHP_VALUE sessions.save_path=/home/www/sessions/
fastcgi_param PHP_ADMIN_VALUE “open_basedir=/usr/local/nginx/html”;

优点:
可以设置变量,就可以写一个在公共文件里面include过来就行了,
比如: fastcgi_param PHP_ADMIN_VALUE “open_basedir=$host”;

缺点:
$_SERVER里面会多出这个值来,
$_SERVER['PHP_ADMIN_VALUE']=”open_basedir=/home/www/docs”

方法2:在php.ini中加入:

[HOST=www.lpboke.com]
open_basedir=/usr/local/nginx/html:/tmp
[PATH=/usr/local/nginx/html]
open_basedir=/usr/local/nginx/html:/tmp

优点:
这种方式应该是官方在5.3里面默认提供的,也不会出现多个$_SERVER['PHP_ADMIN_VALUE']值。

缺点:
每添加一个站都要去修改下php.ini,比较麻烦,而且网站多了,就是是一大堆。

方法3:修改php.ini的user_ini.filename

这种个人暂未尝试.

方法4:修改php源代码

Nginx防跨目录、跨站设置方法之修改PHP源代码

php5.3同样可以使用php5.2的方式修改源代码.

优点:
设置好了,就和以前一样的使用,不需要再添加任何代码.

缺点:
不利于php升级.

个人推荐方法1和方法3,应为经常修改php.ini不是一个好的方法,至于nginx的配置文件可以用include所以不必修改主配置文件。

最后建议大家把上传目录、session目录也隔离掉,防止包含这2个目录的文件,写shell….



你可能感兴趣的:(server,local,配置文件,webshell)