nginx+php使用open_basedir限制站点目录防止跨站

方法1)在Nginx配置文件中加入


fastcgi_param PHP_VALUE "open_basedir=$document_root:/tmp/:/proc/";

通常nginx的站点配置文件里用了include fastcgi.conf;,这样的,把这行加在fastcgi.conf里就OK了。

如果某个站点需要单独设置额外的目录,把上面的代码写在include fastcgi.conf;这行下面就OK了,会把fastcgi.conf中的设置覆盖掉。

这种方式的设置需要重启nginx后生效。

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

[HOST=www.]

open_basedir=/home/www/www.45it.com:/tmp/:/proc/

[PATH=/home/www/www.45it.com]

open_basedir=/home/www/www.45it.com:/tmp/:/proc/

这种方式的设置需要重启php-fpm后生效。

方法3)在网站根目录下创建.user.ini并写入:


open_basedir=/home/www/www.45it.com:/tmp/:/proc/

这种方式不需要重启nginx或php-fpm服务。安全起见应当取消掉.user.ini文件的写权限。

关于.user.ini文件的详细说明:

http://php.net/manual/zh/configuration.file.per-user.php

设置open_basedir的同时最好禁止下执行命令的函数,比如:

shell_exec('ls /etc')仍然查看到/etc目录的文件列表

shell_exec('cat /etc/passwd')仍可查看到/etc/passwd文件的内容

建议禁止的函数如下:


disable_functions = pcntl_alarm, pcntl_fork, pcntl_waitpid, pcntl_wait, pcntl_wifexited, pcntl_wifstopped, pcntl_wifsignaled, pcntl_wexitstatus, pcntl_wtermsig, pcntl_wstopsig, pcntl_signal, pcntl_signal_dispatch, pcntl_get_last_error, pcntl_strerror, pcntl_sigprocmask, pcntl_sigwaitinfo, pcntl_sigtimedwait, pcntl_exec, pcntl_getpriority, pcntl_setpriority, eval, popen, passthru, exec, system, shell_exec, proc_open, proc_get_status, chroot, chgrp, chown, ini_alter, ini_restore, dl, pfsockopen, openlog, syslog, readlink, symlink, popepassthru, stream_socket_server, fsocket, chdir
(0)

相关推荐

  • CentOS 6.2编译安装Nginx1.0.14+MySQL5.5.22+PHP5.3.10步骤分享

    说明:操作系统:CentOS 6.2 32位 准备篇: 一、配置好IP、DNS 、网关,确保使用远程连接工具能够连接服务器 二、配置防火墙,开启80端口、3306端口 vi /etc/sysconfi ...

  • php5.3.10的安装配置步骤详解

    在linux中php安装配置与windows中有不小的区别了,在linux中几乎都是代码形式了,下面我们一起来看看php5.3.10的安装配置步骤详解,希望下文可帮助到各位。 下面以最新的php-5. ...

  • nginx环境建好后搭建虚拟站点基本流程

    因为把一块空的磁盘挂在 home 上了 ... 建议不要挂在 home 目录 ... cd /home/wwwroot/ (进到站点目录) mkdir xxx.xxx (创建文件夹,一般以域名命名文件 ...

  • linux搭建nginx WEB服务器的教程

    下文来为各位介绍一篇在linux搭建nginx WEB服务器的教程,如果各位不想使用apache环境了,想用nginx环境就可以和小编一起来看看。 1、下载nginx 命令:wget http://n ...

  • 如何创建 Nginx 虚拟主机(服务器块)

    服务器块,在 Nginx 中通常称为虚拟主机,允许您在一台服务器上托管多个网站,本文将教大家如何使用它们.Nginx旨在处理单个服务器和 IP 地址上的多个域,换句话说,如果您有一台用作Web 服务器 ...

  • Ubuntu/Debian上安装Nginx+php环境详细教程

    尽管Apache已经占据半片江山,但很多人仍然在寻找其他的方式去托管他们的站点,Apache不只是一个选择,其他很多优秀的服务器程序例如lighthttp和nginx也是不错的选择。本教程将要向您展现 ...

  • Ubuntu中Nginx服务器安装配置教程

    Nginx是一个非常轻量级的HTTP服务器,也是一个高性能的HTTP和反向代理服务器,同时还是一个IMAP/POP3/SMTP 代理服务器。 1.对PHP支持 目前各种web 服务器对PHP的支持一共 ...

  • Ubuntu/Debian上安装Nginx+php环境

    尽管Apache已经占据半片江山,但很多人仍然在寻找其他的方式去托管他们的站点,Apache不只是一个选择,其他很多优秀的服务器程序例如lighthttp和nginx也是不错的选择。本教程将要向您展现 ...

  • 在Linux系统上怎么通过uWSGI配置Nginx+Python环境

    在Linux系统上怎么通过uWSGI配置Nginx+Python环境