nginx 只让php入口文件访问,其他php文件禁止直接访问
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx 只让php入口文件访问,其他php文件禁止直接访问相关的知识,希望对你有一定的参考价值。
网站经常被植入php文件后门,现在网站根目录下有两个入口文件 分别是web/index.php
app/index.php 。黑客经常利用上传漏洞上传可执行文件,如何利用nginx 只让 web/index.php 和 app/index.php 访问呢?其他的php文件一律不能访问?
你用的系统是微擎吗?
正常来说,除了这两个php文件,和回调用的接口外,其它php都是不能直接访问的,文件头有常量判断,未定义就退出了。
所以你的系统有上传漏洞,应该检查是哪里出了问题,并去修复一下。可以从以下几点着手:
上传权限仅提供给已登录会员,在上传接口中判断未登录状态的,直接返回错误信息
上传文件类型限制,如果需要的是图片,严格限制图片类型,并做图片规格检测(gd库就可以处理),不符合的不保存文件
文件名处理,不要使用客户端上传的文件名保存,而是根据规则 生成一个随机的名字保存
上传频率限制(根据会员限制),比如,一个小时内限制上传5张,一天限制100张,可以有效防止黑客利用上传接口填充垃圾文件到你的服务器
如果可行,对上传文件做一个临时机制,如上传的文件先放到临时文件夹,资料保存的时候,把文件处理一下,移动到正常的附件目录。这样就可以定期清理临时文件夹,防止上传后没使用的文件过多占用服务器空间。
不过这个功能改起来会复杂一点,要处理所有使用到上传功能的接口。
以上几点处理好,被上传可执行文件的问题基本上可以杜绝了
而你的解决方案,是只治标不治本的方案
参考技术A nginx调用PHP有sock方式和端口方式1、确认nginx已经调用了php;
2、先确认你的nginx使用什么方式调用PHP;
3、如果使用端口方式,端口对不对应,如果使用SOCK方式,那么路径对不对;
上面只是大概,你有配置文件给,基本很快看出来,没有的话,实在不好判断 参考技术B 可以在nginx配置中直接写正则,判断如果不是这两个路径就return就完事了追问
帮忙写一下好吗 重谢
追答#匹配到访问路径
location ~* (!(web\/index\.php|app\/index\.php))
return 403;
好像就这个样子 不过你这俩个入口文件的访问权限应该不写在nginx里比较好吧
nginx隐藏入口文件index.php
网站的访问url可能是这样
http://www.xxx.com/index.php/home/index/index
这种有点不美观,我们想达到如下效果
http://www.xxx.com/home/index/index
修改一下nginx配置即可:
server {
listen 80;
server_name www.xxx.com;
root "/var/html/wwwroot/xxx";
index index.html index.php;
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}
# ...
}
以上是关于nginx 只让php入口文件访问,其他php文件禁止直接访问的主要内容,如果未能解决你的问题,请参考以下文章