nginx--基础--3.15--案例--只允许指定的网站进行跨域请求

nginx–基础–3.15–案例–只允许指定的网站进行跨域请求


1、不安全的CORS配置

  1. 测试人员访问某个url,将请求头中的Origin字段修改为任意值,结果仍然能获得正确的响应报文,就说明有CORS漏洞。
  2. 当响应头中的Access-Control-Allow-Origin设置为null或*时,表示信任任何域,这时候就可能引入安全问题。
  3. 修复方法:不让在nginx或tomcat中配置
    1. Access-Control-Allow-Origin *
    2. Access-Control-Allow-Origin null

1.1、测试截图

在这里插入图片描述

1.2、风险

CORS可以共享许多内容,但它是一个相对盲目的协议,只是通过HTTP头来控制,因此它会带来一定的风险,包括:

  1. HTTP头只能说明请求来自一个特定的域,但是并不能保证这个事实,因为HTTP头可以被伪造,所以未经身份验证的跨域请求应该永远不会被信任。如果一些重要的功能需要暴露或者返回敏感信息,应该需要验证Session ID。
  2. 恶意跨域请求,即便页面只允许来自某个信任网站的请求,但是它也会收到大量来自其他域的跨域请求,这些请求有时可能会被用于执行应用层面的DDOS攻击,并不应该被应用来处理。
  3. 内部信息泄漏,假定一个内部站点开启了CORS,如果内部网络的用户访问了恶意网站,恶意网站可以通过CORS(跨域请求)来获取到内部站点的内容。

1.3、修复建议

  • 配置白名单,只允许特定的Access-Control-Allow-Origin头,并拒绝白名单以外的域名进行访问;
  • 通过多种条件屏蔽掉非法的请求,例如HTTP头、参数等;
  • 如果使用了反向代理等功能,则需要配置在最里层的中间件;

可参考以下链接中的配置方式:

https://blog.csdn.net/BHSZZY/article/details/119024992
https://www.cnblogs.com/wenyoudo/p/14862701.html

2、操作

在nginx配置文件中配置:

 # 方式:添加允许跨域的域名:这里使用正则
location / { 
  add_header Access-Control-Allow-Origin *.xxx.com;
  add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";
  add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
}

 # 方式:指定域名
location / { 
  add_header Access-Control-Allow-Origin http://www.hao123.com;
  add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";
  add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
}

 # 方式:指定ip与端口,可以逗号拼接;
location / { 
  add_header Access-Control-Allow-Origin http://10.130.222.222:6500,http://10.130.222.223:6500;
  add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";
  add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
}

# 方式:使用正则表达式;
location ~ /myurl(.*) {
  if ( $http_origin ~ '^http(s)?://(localhost|10\.130\.222\.222):6500$' ){
  add_header Access-Control-Allow-Origin $http_origin;
  }
  if ( $http_origin ~ '^http(s)?://(localhost|10\.130\.222\.223):6500$' ){
  add_header Access-Control-Allow-Origin $http_origin;
  } 
  add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";
  add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值