社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  NGINX

Nginx配置origin限制跨域请求

马哥Linux运维 • 1 年前 • 253 次点击  

按照等保要求,跨域的不安全性,需要修复。

这个需要根据客户端传递的请求头中的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_he ader Access-Control-Allow-Origin等相关配置,就不这么复杂了。

链接:https://blog.csdn.net/qq_20236937/article/details/128640137

(版权归原作者所有,侵删)


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/156587
 
253 次点击