cors

Nginx配置origin限制跨域请求_nginx origin-CSDN博客

Nginx需要修复一个安全漏洞

 

在这里插入图片描述
在这里插入图片描述
这个需要根据客户端传递的请求头中的Origin值,进行安全的跨站策略配置,目的是对非法的origin直接返回403错误页面,配置如下:

 

1、在http中定义一个通过map指令,定义跨域规则并返回是否合法

 

 
  1. http {
  2. ...
  3. # 说明:一般使用http_origin来进行跨域控制,当不传递origin头的时候,就为这个里面的默认值,当传递有值得时候,才会走下面得正则匹配
  4. map $http_origin $allow_cors {
  5. default 1;
  6. "~^https?://.*?\.theorydance\.com.*$" 1;
  7. "~^(https?://(dmp.xxxxxx.cn)?)$" 1;
  8. "~*" 0;
  9. }
  10. server {
  11. location / {
  12. if ($allow_cors = 0){
  13. return 403;
  14. }
  15. root /data/deploy;
  16. }
  17. }
  18. }
  19.  
 

 

上述规则中,
a.当不传递origin头的时候,就为这个里面的默认值为1,
b.如果orgin的值为https://dmp.xxxxxx.cn或者含“theorydance”的,我们认为是合法的请求,返回数值1,如果是其它值,返回数值0

 

2、在server中根据$allow_cros的值进行请求拦截

 

 
  1. if ($allow_cros = 0){
  2. return 403;
  3. }
 

 

3、在server中添加头部

 

 
  1. #指定允许其他域名访问
  2. add_header Access-Control-Allow-Origin $http_origin;
  3. #允许的请求类型
  4. add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
  5. #许的请求头字段
  6. add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";
 

 

验证
1.不指定 origin时,请求正常
在这里插入图片描述

 

2.指定合法 origin时,请求正常
在这里插入图片描述
3.指定非法origin时,请求返回403
在这里插入图片描述
参考链接
https://www.cnblogs.com/justtosee/p/16987894.html
https://www.cnblogs.com/TheoryDance/p/16277577.html

posted @ 2024-02-04 17:28  CharyGao  阅读(6)  评论(0编辑  收藏  举报