nginx跨域漏洞问题处理
文章目录
- 场景
- 解决方案
- option的设置,实测无效
- deny和allow 可以么
- 最终方案,判断$http_origin
- 其他
- nginx默认是不允许跨域的
- 使用geo改进丑陋的代码
- access配置为什么会重复
- try_files 和 if不要同时使用
本文解决的是跨域漏洞问题。
网上的多是如何实现跨域,这里是避免跨域。
场景
项目发现跨域漏洞。
也就是说,origin 设置为任意域名,都可以返回数据。这是不安全的。
实际应该只有指定的域名才可以返回数据。
目的: 不允许任意域访问数据。
解决方案
option的设置,实测无效
if ($request_method = 'POST') {add_header Access-Control-Allow-Origin *; # 这里需要设置为自己的域名add_header Access-Control-Max-Age 1728000;add_header Access-Control-Allow-Methods GET,POST,OPTIONS;add_header Access-Control-Allow-Headers 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';add_header Content-Type' 'text/plain; charset=utf-8';add_header Content-Length 0 ;return 204;
}
deny和allow 可以么
配置:
satisfy all;
allow 127.0.0.1;
allow 192.168.0.1;
deny all;
修改origin为白名单,发现返回不了,只得作罢。
后来发现这个控制的是客户端ip,不是跨域origin地址,所以不管有效无效都是错的。
最终方案,判断$http_origin
原来: $http_origin是origin的值,如果不在白名单范围内,就返回403。
配置:
if ( $http_origin !~* 127.0.0.1|192.168.0.1|baidu|\*) { # 最后面的 \* 是为了匹配 * 号return 403 ;
}
另一种写法(加小块号)也是可以的,如:
if ( $http_origin !~* (127.0.0.1|192.168.0.1|baidu|\*) )
注: 这里面可以使用正则表达式。
可以写ip,也可以写域名,或者域名的一部分。
实测有用。
可能的副作用:
1、如果后面跟着try_files,try_files可能会失效。
例如如果某个地址找不到,那么会重定向到index.html。加了如上代码之后,无法重定向了。现象是刷新或者页面直接输入地址,会报403。
还有可能同页面的下载也会有问题,报403。
目前先将就用着,其实应该找更好的方法。
其他
nginx默认是不允许跨域的
配置中没有找到开启跨域的内容,为什么会有跨域安全问题呢?
待解决。
使用geo改进丑陋的代码
if后面跟多条件,代码确实比较丑陋。可以用geo模块转换下,代码就清爽很多,而且可以复用。
geo中是可以使用掩码等方式的,但是不知道是否可以通配符匹配。
access配置为什么会重复
我们发现,返回的报文中,access属性可能会多个。
Access-Control-Allow-Origin: deny
Access-Control-Allow-Origin: *
Access-Control-Allow-Origin: aaa.com
这说明他不是覆盖的关系,而是并列存在的关系。
try_files 和 if不要同时使用
同时使用发现有问题。
可能会导致if无效,或者try_files无效。
建议if语句放在外面。
nginx跨域漏洞问题处理相关推荐
- Android中WebView的跨域漏洞分析和应用被克隆问题情景还原(免Root获取应用沙盒数据)...
一.前言 去年年底支付宝的被克隆漏洞被爆出,无独有偶就是腾讯干的,其实真正了解这个事件之后会发现,感觉是针对支付宝.因为这个漏洞找出肯定花费了很大劲,主要是因为支付宝的特殊业务需要开启了WebView ...
- 蜜罐中利用jsonp跨域漏洞和xss漏洞的分析
一.前言 我们在打红队的时候,经常会碰到蜜罐,而更有一些"主动防御"的蜜罐中利用到了一些网站的跨域漏洞和xss,对此进行简单分析. 二.蜜罐的概念 蜜罐主要是通过布置诱饵,诱使攻击 ...
- Nginx跨域配置、限制连接、限制下载速度
目录 一.Nginx跨域配置 二.Nginx限制连接配置 三.Nginx限制下载速度配置 一.Nginx跨域配置 #允许跨域请求的域,* 代表所有 add_header 'Access-Control ...
- Jsonp跨域漏洞浅析
为什么要用到jsonp跨域? 同源策略:协议.域名.端口都相同,是一种安全策略,不同源的客户端脚本在没有明确授权的情况下,不能读取对方资源. 如何解决跨域(目前我掌握的有两种手段 (1)JSONP方式 ...
- vue项目打包部署nginx跨域
vue项目打包部署nginx跨域 vue项目连接外部api接口时,打包部署到nginx后出现api404,api跨域问题,这个时候需要给vue项目本身进行跨域,再配置nginx中进行跨域即可解决,详见 ...
- 修复Cors跨域漏洞
由于项目是采用前后端分离开发的,所以前端项目访问服务器时需要跨域,所以就在服务器配置了 Access-Control-Allow-Origin 等于 * ,代码如下 @Configuration pu ...
- nginx跨域步骤详情
此文章只实现在本地开发环境下的应用nginx跨域 1.下载nginx稳定版本 下载地址:nginx: download 2. 配置nginx文件下的nginx.conf 3. 打包 我用的react ...
- web漏洞挖掘指南-前端跨域漏洞
web漏洞挖掘指南 前端跨域漏洞 一.何为跨域 1.设想一种场景,一个恶意网站上嵌入了一个iframe标签去加载银行的登陆页面,高度和宽度的设置和真实的银行官网一样,当用户访问恶意网站并登录时,攻击者 ...
- CORS跨域漏洞学习
目录 前言 一.CORS及SOP简介 跨域访问的一些场景: 二.CORS跨域原理及漏洞成因 CORS跨域--简单请求的流程 CORS跨域--非简单请求的流程 三.CORS漏洞攻击流程 四.CORS漏洞 ...
最新文章
- 网站建设难?三个技巧来帮你!
- Windows下的文件类型
- daemon.json无法启动docker_devops一键部署|详解如何搭建git+maven+jenkins+docker
- 顺丰快递单号的规律_顺丰快递单号查询跟踪(单号码查询)
- Git之 手把手教你使用Git
- redis 安装错误 jemalloc.h: No such file or directory
- 基于matlab的图像分割,基于MATLAB的图像分割算法研究毕业论文
- 单片机单口不可用或被占用_新唐单片机代码评审总结
- 联合促经济 伟库网在江门普及SaaS
- Redis开发与运维学习笔记
- PHP爬虫最全总结2-phpQuery,PHPcrawer,snoopy框架中文介绍
- 《UNIX环境高级编程》(第3版)
- Log4Qt 日志格式化(TTCCLayout)
- Unit 1: Packet Sniffing 1.1 Packet Sniffing Introduction to Packet Sniffing
- 对物联网的感悟_对物联网产业的理解 对物联网的感悟
- 初中信息技术说课稿_小学信息课说课稿范文(精选6篇)
- 【C++ 】STL求全排列和组合
- 超乎认知 认知智能十大黑科技 我国首次对外公布 道翰天琼认知智能
- Vue Devtools不显示Components
- 一分钟了解“#include iomanip”
热门文章
- 轴承上下料系统 欧姆龙NX1P2-1140DT,经典四轴定位控制
- 独上高楼, 望尽天涯路 . (路在前方)
- WebOS 1.4.5 SDK安装与第一个Hello World
- Apache commons lang3 StringUtils工具类
- 成都市发布大数据产业发展规划 2025年产值达到3000亿元
- 点滴积累,汇聚无限-菜鸟成长记
- linux mint flasher plugin
- rs232读取智能电表_【华恒仪表冠名】物联网智能电表会取代预付费电表吗?
- The goal you specified requires a project to execute but there is no POM in this directory问题解决
- Motion-Attentive Transition for Zero-Shot Video Object Segmentation论文浅读