当前位置:首页 > 技术文章 > 正文内容

nginx限制php程序“跨站”访问 nginx限制只能域名访问

arlanguage5个月前 (12-11)技术文章37

我秀站外合作有一个需求:需在一台web服务器上增加一个虚拟主机用来做图片资源站,所用程序为第三方,担心有后门程序,因此希望最好隔断与原机器其他服务的关系。

思考了一下,确实有一些风险存在。目前我们服务器上都统一使用nobody用户启动nginx和php,包括web目录,这些机器上部分有多个域名在一起运行。这样至少存在一个问题:如果某一个虚拟主机站点有问题,其web目录如/diska/htdocs_1被注入恶意程序,那么其他的站点目录如/diska/htdocs_2域名也很可能难以幸免地通过这个恶意程序被访问到。分开不同用户权限,固然可以解决这个问题。但同时也意味需要徒增一个特定用户,想找一个类似chroot功能。经过搜索查找,nginx中可以增加一个配置项“fastcgi_param PHP_VALUE xxxx”达成这功能:

server {

listen 80 ;

……

location ~ \.(php|phtml) {

……

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

……

}

}

配置项加入在需要设置vhost中,冒号":"为分隔多个路径。当然也可以加入到 fastcgi_params中让nginx全局调用。

这样实现了虚拟主机限制在各自的web目录中,当某一个域名下出现漏洞或被攻击时,同一服务器下的其他应用域名不会因此而导致程序文件被查看或修改,避免“跨站”影响。

在查找过程中,同时发现如被入侵,虽然禁锢了对其他web目录的操作,但php程序还可以调用系统的命令进行一些操作。进一步加强安全,降低webshell调用的系统命令,可在php.ini下加入以下选项:

disable_functions = rmdir,exec,system,passthru,shell_exec

以上,我和松哥通过一些探针脚本进行测试验证,成功通过检测。

如果没上述的设置,那么恶意的脚本能直接通过浏览器访问到其他站点目录的内容,甚至可以本地调用系统命令启动一些基于php启动权限拥有者可以启动的端口。

供参考。

**注** 网上一些资料说在php5.2版本下,这些设置是不生效的。特意试了一下,真的如此。幸好我们的普遍在5.3以上。

扫描二维码推送至手机访问。

版权声明:本文由AR编程网发布,如需转载请注明出处。

本文链接:http://www.arlanguage.com/post/92.html

标签: php支持nginx
分享给朋友:

“nginx限制php程序“跨站”访问 nginx限制只能域名访问” 的相关文章

Nginx 负载均衡配置教程以及 upstream 详解

一、通用配置在 Nginx 中配置负载均衡非常简单。通过定义一个 upstream 块,你可以指定多个后端服务器用于负载均衡。下面是一个基本的例子:http { upstream myapp { server backend1.example.com;...

NGINX配置跨域CORS支持 nginx配置跨域请求

NGINX配置跨域CORS支持这两天在搞酷瓜云网课的 app,采用 uni-app 做全端支持,现学现卖,目前算是入门了。在做 H5 的时候难免会跨域请求后端 API,虽然用 HBuilder 内置的浏览器不会有跨域问题(这个应该是做了内部处理),但是那个内置浏览器真尼妈坑爹,过一会就会卡死,导致...

linux上将大文件切割成小文件之split命令

说明:很多场景需要拷贝或传输文件时,如果我们需要拷贝的文件太大的话,就需要想办法将其分成小个文件进行拷贝,然后载重新合并。今天介绍 split 命令格式:split [OPTION] [INPUT [PREFIX]]一、压缩并切割使用tar命令进行压缩,使用split进行切割实例:# 压缩 ]# t...

宝塔面板如何关闭https强制跳转http/https共存

宝塔面板如何关闭https强制跳转http/https共存在 宝塔面板 中,如果你需要关闭 HTTPS 强制跳转并实现 HTTP 和 HTTPS 共存,可以通过以下步骤完成配置:一、关闭 HTTPS 强制跳转登录宝塔面板进入宝塔后台,点击左侧菜单中的 网站。找到目标网站在网站列表中找到需要取消 HT...

开源|维易CMDB详解之安装部署及常见问题处理(转载37丫37)

本文内容转载自大佬37丫37的运维咖啡吧,有兴趣的朋友可以关注一下他!之前介绍过一个灵活多变功能强大的开源CMDB系统,设计精巧,可玩性高,经过一段时间的深度使用,发现了许多可取之处,无论是构建系统内部的资产管理数据库,还是学习它的设计方式都有不少的可取之处,接下来我准备写一系列的文章来系统的介绍一...

【干货】又是一年跳槽季!Nginx 10道核心面试题及解析

Nginx是一款轻量级的高性能Web服务器和反向代理服务器,由俄罗斯的Igor Sysoev开发。它具有占用资源少、高并发、稳定性高等优点,被广泛应用于互联网领域。在Nginx的面试过程中,面试官通常会提出一些核心问题,本文将介绍一些常见的Nginx核心面试题及其解答。1 Nginx的主要特点是什么...