Chrome 94新增的跨域策略深层次解读 原创 精选

2022-08-22
关注

抛出问题

你是否遇到过这样的问题:以前一个运行得好好的系统,突然在某个时刻(2021年9月21日之后)用户反馈说用不了了。如果用户允许你F12进行网络交互或者控制台输出查看时,你会发现这样的错误:

Access
to XMLHttpRequest at 'http://[some_url]' from origin
'http://[some_url]' has been blocked by CORS policy: The request client
is not a secure context and the resource is in more-private address
space 'private'.

然后请求就中断了,后续的逻辑自然也就没办法进行了。乍一看是跨域策略(CORS policy)的问题,赶紧去看看接口的Response Header与跨域相关的配置:

Access-Control-Allow-Origin: *

Access-Control-Allow-Headers: X-Requested-With, Content-Range, Content-Type

Access-Control-Expose-Headers: Range

和跨域相关的配置也都返回了(要不然以前的系统也不能正常地运行),怎么突然就报错了呢?如果你遇到了相同的疑问,那么这篇文章就继续读下去吧。

复现问题

首先,你操作的业务系统,其域名一定指向的是一个公网IP地址。这里我们假设名为"out.com";

其次,在上述业务系统中调用了另外一个系统的接口,该子系统域名指向的是一个内网IP(无论A类B类还是C类子网)地址(localhost, 127.*.*.*, [::1]除外)。这里我们假设名为“in.com”。

最后,一定是上述两个系统都采用http协议进行访问。

举个例子*:

ping out.com

来自 110.242.68.66 的回复: 字节=32 时间=12ms TTL=48

ping in.com

来自 10.29.10.136 的回复: 字节=32 时间=12ms TTL=48

操作页面:http://out.com/article/process,在该页面中有如下JS:

$.ajax({url:"http://in.com/api/auditors", method:"GET", success:function(ret) {}})

那么此时就会复现文章开头描述的问题。

*注:以上数据经过脱敏处理,所涉及域名和IP地址并非真实数据,仅供内容阐述之用。

问题原因

为什么升级到Chrome 94开始就有问题了呢?在这一版中,它禁止了公共非安全上下文(广义上说,不通过 HTTPS 或来自私有 IP 地址的网站)向私有网络发出请求。听起来很难理解。让我们抽出这句话的关键词:公共上下文 / 请求 / 私有网络。

这里不得不聊一下现在的网络应用背景。越来越多的家庭出现了嵌入式设备。而这些设备的安全性普遍都不是很高。仅仅提供一个简单的http配置界面给用户。如果访问了一个外网别有用心的网页,里面被嵌入了一个内网的ajax请求,那么这些家庭中的嵌入式设备就很容易遭到攻击。下面是我总结的一张表格,含义是外网资源采用不同的协议访问内网资源时的组合情况。

外网访问内网

http

https

http

Chorme 94禁止

Chorme 94禁止

https

安全内容加载不安全内容,禁止

取跨域策略

这里可以给大家举个例子。部分型号的TP-Link路由器,为了方便用户进行配置,只要连接上(通过有线或者无线),浏览器输入:tplogin.cn就可以自动打开管理界面(域名自动解析到默认网关)。在Chrome 94之前,当用户打开了一个“精心设计”的http页面,内部编写了一套针对tplogin.cn的攻击JS。那么处于内网的路由器就有被侵入的风险。

其实由此可以联想到现在的智能手机,在iOS中,如果应用需要网络权限,用户可以选择蜂窝和无线网络,而无线网络又可以选择是否允许访问本地网络。此功能与Chrome本次的跨域策略升级其实是基于同样的考量。

解决方法

方案一:同时升级外部系统和内部系统,都采用https协议访问;

方案二:如果你有权限控制外部系统,让外部系统在公司内网中也解析为内网地址。

如果你不得不采用http方式访问(例如:没有对应的https证书),那么用户可以在浏览器中禁用掉这一策略。在chrome中打开此地址:

chrome://flags/#block-insecure-private-network-requests

将Block insecure private network requests配置禁用掉(Disable)。但是一定要注意,修改了配置后必须点击Chrome此时在右下角出现的“重启”(Restart)按钮才能生效。自己主动关闭浏览器全部页面再打开是不会触发Chrome更新配置的。

参考文献

[1]Titouan Rigoudy,Private Network Access update: Introducing a deprecation trial

[EB/OL].https://developer.chrome.com/blog/private-network-access-update/,2022-02-10.

您觉得本篇内容如何
评分

相关产品

Honeywell 霍尼韦尔智能工业 在线/便携烟气分析仪专用传感器 气体传感器

CO 传感器;SO2传感器;NO2 传感器;NO传感器;氧气传感器

微著科技 高性能传感器ASIC解决方案 MEMS传感器

微著科技是国内为数不多能够给传感器厂商提供定制高性能传感器解决方案的团队,目前已为国内众多院所及知名传感器公司提供了十余个传感器解决方案并已经实现量产。微著传感器ASIC方案的特点:成熟的仪表信号模块IP易于快速搭建;系统方案超低噪声;成熟的24ADC可同时实现模拟数字传感器方案设计;高效率及丰富的方案设计经验。

南方泰科 TGM 压力传感器

TGM是一款SOP8封装的压阻式MEMS压力传感器,其压力传感器芯片封装在 SOP8 塑封壳内。在传感器压力量程内,当用固定电压供电时,传感器产生毫伏输出电压,正比于输入压力。压力传感器芯片为绝压,可提供不同的压力量程的SOP8 压力传感器。

鑫精诚传感器 XJC-T001 压力传感器

◆传感器激光焊接密封,环境适应性较强 ◆球形联接件,始终保持模块的垂直称重状态 ◆支撑螺栓,防止设备倾覆且方便维护 ◆接地装置,保护传感器免受电源浪涌冲击 ◆过载保护装置,保护传感器免受冲击力

Huba Control 富巴 525系列 压力传感器

525系列压力传感器采用集公司20多年研发经验的陶瓷压力传感器芯片技术。该系列压力传感器可选压力范围大,电气连接形式多。最小量程为50mbar。大批量使用具有很好的性价比。

Winsen 炜盛科技 MH-410D 红外CO2气体传感器 红外传感器

MH-410D红外气体传感器是通用型、智能型、微型传感器,该红外传感器利用非色散红外(NDIR)原理对空气中存在的CO2进行探测,具有很好的选择性,无氧气依赖性,性能稳定、寿命长。内置温度补偿。该红外传感器是通过将成熟的红外吸收气体检测技术与微型机械加工、精良电路设计紧密结合而制作出的小巧型高性能红外传感器。该红外传感器可广泛应用于暖通制冷与室内空气质量监控、工业过程及安全防护监控、农业及畜牧业生产过程监控。

佰测传感 MS71 传感器

MS71差压传感器

Cubic 四方光电 PM3009BP 室外粉尘传感器

PM3009BP是一款专门针对餐饮油烟监测的油烟传感器,其采用旁流采样方式,自带除水雾装置,结合智能颗粒物识别算法,确保传感器能够快速准确的检测油烟浓度的变化,同时创新的镜头自清洁技术的应用,能够长效防护传感器油烟污染,大幅度延长传感器的使用寿命。

评论

您需要登录才可以回复|注册

提交评论

广告

51CTO

这家伙很懒,什么描述也没留下

关注

点击进入下一篇

常见磁传感器及原理和应用

提取码
复制提取码
点击跳转至百度网盘