Chrome内网站点向localhost发送请求未来是否会被官方拦截?
我们的应用包含两个组件:运行在IP地址192.168.1.189上的内网网站,以及在用户本地设备上运行简易web服务器的桌面工具。该桌面工具用于通过存储在USB密钥中的证书对文档进行签名,签名机制为网站通过HTTP协议向127.0.0.1发送请求,接收已签名文档作为响应。
当前发送请求时会出现如下提示:
[弃用提醒] 该网站请求了一个子资源,该资源仅能通过用户的特权网络位置访问。这类请求会将非公开设备和服务器暴露到互联网,提升了跨站请求伪造(CSRF)攻击及/或信息泄露的风险。为降低此类风险,Chrome 弃用了在非安全上下文下发起的非公开子资源请求,将在Chrome 92版本(2021年7月)中开始拦截此类请求。查看相关Chrome官方功能文档了解更多详情。
我目前安装的是Chrome 94版本,已查阅参考文档了解到私有网络和公网是区分开的,但仍不确定未来192.168.1.189向127.0.0.1发送的请求是否会被拦截,请问这类请求未来会被Chrome拦截吗?
这类请求会被Chrome未来的版本默认拦截。
Chrome的私有网络访问(PNA)规范将网络地址按优先级从高到低分为公网地址、私有网络地址、本地地址三类,核心规则是仅允许高优先级地址源向低优先级地址发起请求,反向请求会被拦截。192.168.1.189属于私有网络地址,优先级低于属于本地地址的127.0.0.1,所以即使二者都属于非公开网络,这类跨优先级请求也在限制范围内,你目前看到的弃用提示就是拦截规则正式落地前的前置提醒。
如果需要继续使用该交互逻辑,可以通过以下配置适配Chrome的规则:
- 给内网网站和本地桌面工具的web服务都配置HTTPS证书,确保二者都在安全上下文下运行
- 本地服务响应内网网站的CORS预检请求时,返回
Access-Control-Allow-Private-Network: true头,明确允许私有网络来源的访问请求
内容的提问来源于stack exchange,提问作者Jiří Pešík

