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

一、问题现象:

二、问题原因:

从 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 的请求。

图示:

相关推荐
黄尚圈圈21 分钟前
Vue 中引入 ECharts 的详细步骤与示例
前端·vue.js·echarts
浮华似水1 小时前
简洁之道 - React Hook Form
前端
正小安3 小时前
如何在微信小程序中实现分包加载和预下载
前端·微信小程序·小程序
_.Switch5 小时前
Python Web 应用中的 API 网关集成与优化
开发语言·前端·后端·python·架构·log4j
一路向前的月光5 小时前
Vue2中的监听和计算属性的区别
前端·javascript·vue.js
长路 ㅤ   5 小时前
vite学习教程06、vite.config.js配置
前端·vite配置·端口设置·本地开发
长路 ㅤ   5 小时前
vue-live2d看板娘集成方案设计使用教程
前端·javascript·vue.js·live2d
Fan_web5 小时前
jQuery——事件委托
开发语言·前端·javascript·css·jquery
安冬的码畜日常5 小时前
【CSS in Depth 2 精译_044】第七章 响应式设计概述
前端·css·css3·html5·响应式设计·响应式
莹雨潇潇6 小时前
Docker 快速入门(Ubuntu版)
java·前端·docker·容器