Nginx配置origin限制跨域请求 转载
按照等保要求,跨域的不安全性,需要修复。
这个需要根据客户端传递的请求头中的Origin值,进行安全的跨站策略配置,目的是对非法的origin直接返回403错误页面。
漏洞复现
复现方式为在 Header 中指定 Origin 请求头,看是否可以请求成功。
能够请求成功,说明未对请求头进行控制,有漏洞。
curl -H 'Origin:http://test.com' http://192.168.15.32:80
修复办法
在http中定义一个通过map指令,定义跨域规则并返回是否合法
http {
...
// 再白名单里边返回0,不在返回1
map $http_origin $allow_cors {
default 1;
"~^https?://.*?\.tripwolf\.com.*$" 1;
"~^(https?://(dmp.finerice.cn)?)$" 1;
"~*" 0;
}
server {
# 指定允许其他域名访问
add_header Access-Control-Allow-Origin $http_origin;
# 允许的请求类型
add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
# 许的请求头字段
add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";
location / {
# 进行请求拦截
if ($allow_cors = 0){
return 403;
}
root /mnt/data;
}
}
}
验证方法
通过POSTMAN进行请求模拟,配置不同的Origin,查看返回结果。
如果不需要跨域,则直接清理掉add_header Access-Control-Allow-Origin等相关配置,就不这么复杂了。
链接:https://blog.csdn.net/qq_20236937/article/details/128640137
分类:
linux
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
2020-06-27 linux 学习笔记3