不安全公共网站的对私有网络的请求

一、问题现象:

二、问题原因:

从 Chrome 94 开始,禁止公共非安全上下文(广义上说,不通过 HTTPS 或来自私有 IP 地址的网站)向私有网络发出请求

受影响的请求包括

从公共网络到私有网络的请求

从专用网络到本地网络的请求

从公共网络到本地网络的请求

chrome版本更新历史

对应chrome配置:

Block insecure private network requests

官方链接

developer.chrome.com/blog/privat...

web.dev/cors-rfc191...

引入预检声明developer.chrome.com/blog/privat...

三、问题定位

1、检查代理

关闭本地所有代理,出现改问题

打开本地代理,改问题消失,可以推测与网络环境有关

2、关闭代理的情况下检查本地配置

本地host文件中配置了域名对应ip,这个ip是私有ip,访问该ip时符合从公共网络到私有网络的请求,被chrome规则拦截

3、问题解决

修改本地host配置

四、判断网站是否受到影响

从 Chrome 98 开始,如果检测到私有网络请求,则会在其前面发送预检请求。如果此预检请求失败,仍会发送最终请求,但会在 DevTools 问题面板中显示警告。

五、类似问题官方推荐解决方案:

解决方案1:

注册弃用试用版

注册弃用试用版,并配置 服务器以Origin-Trial: $token在响应上附加特定于源的标头

缺点:

该方案最多使用到chrmoe102

解决方案2:

启用策略

更新客户端策略重新启用已弃用的功能

缺点

需要在用户客户端进行操作

解决方案3:

升级为HTTPS

通过 HTTPS 为私有网站提供服务的主要问题是公钥基础设施证书颁发机构 (PKI CA) 仅向具有公共域名的网站提供 TLS 证书。要解决此问题:

  1. 注册一个公共域名(例如intranet.example)并发布将该域名指向您选择的公共服务器的 DNS 记录。
  2. 获取 TLS 证书intranet.example。
  3. 在您的专用网络中,配置 DNS 以解析intranet.example到目标服务器的专用 IP 地址。
  4. 配置您的私人服务器以将 TLS 证书用于intranet.example. 这允许您的用户访问位于 的私有服务器intranet.example。

优点

chrome推荐的面向未来的解决方案

缺点:

1、需要申请和购买证书,

2、需要将现有http服务升级至https

解决方案4

反向嵌入

从私有服务器提供应用程序的骨架,然后从公共服务器(例如 CDN)获取其所有子资源(例如脚本或图像)

缺点:

1、需要重新搭建部署的网络环境

2、chrome声明未来可能会改变

解决方案5

CORS 预检请求

developer.chrome.com/blog/privat...

chrome98中专用网络访问的新增功能

为预检请求引入了一对新的请求和响应标头:

  • Access-Control-Request-Private-Network: true在所有 PNA 预检请求上设置
  • Access-Control-Allow-Private-Network: true必须在所有 PNA 预检响应上设置

无论请求方法和模式如何,都会为所有专用网络请求发送 PNA 的预检请求。它们在cors模式以及no-cors所有其他模式中的请求之前发送。这是因为所有私网请求都可以用于 CSRF 攻击,无论请求模式如何,以及响应内容是否对发起者可用

问题:

预检请求模式目前已被回滚,暂时无法使用

备注:

专用网络请求是目标服务器的 IP 地址比请求发起者获取的 IP 地址更私密的请求。例如,从公共网站 ( example.com) 到私人网站 ( router.local) 的请求,或从私人网站到 localhost 的请求。

图示:

相关推荐
anyup_前端梦工厂2 小时前
了解几个 HTML 标签属性,实现优化页面加载性能
前端·html
前端御书房2 小时前
前端PDF转图片技术调研实战指南:从踩坑到高可用方案的深度解析
前端·javascript
2301_789169542 小时前
angular中使用animation.css实现翻转展示卡片正反两面效果
前端·css·angular.js
遥遥远方 近在咫尺3 小时前
HTTPS原理
网络协议·https
编程星空3 小时前
HTTP 和 HTTPS 的区别
网络协议·http·https
风口上的猪20153 小时前
thingboard告警信息格式美化
java·服务器·前端
程序员黄同学4 小时前
请谈谈 Vue 中的响应式原理,如何实现?
前端·javascript·vue.js
爱编程的小庄4 小时前
web网络安全:SQL 注入攻击
前端·sql·web安全
宁波阿成5 小时前
vue3里组件的v-model:value与v-model的区别
前端·javascript·vue.js
柯腾啊5 小时前
VSCode 中使用 Snippets 设置常用代码块
开发语言·前端·javascript·ide·vscode·编辑器·代码片段