您当前的位置:首页 > 网站建设 > 网站维护
| php | asp | css | H5 | javascript | Mysql | Dreamweaver | Delphi | 网站维护 | 帝国cms | React | 考试系统 | ajax | jQuery |

Nginx配置origin限制跨域请求的详细过程

51自学网 2023-07-14 22:04:02
  网站维护

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

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


下载地址:
docker
docker命令中必须加上sudo的问题解决方法
51自学网自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1