Origin API 在 Edge 145 中落地 — 原生 Origin 对象在浏览器中到来
ReactNode.jsDevOps
发生了什么
- Microsoft Edge 145 推出了 Origin API — 一个原生的、结构化的 Origin 对象,允许网页代码解析、序列化和比较来源,而不再依赖脆弱的 ASCII 字符串。(learn.microsoft.com)
为什么这对全栈开发者很重要
- 更安全的来源比较:许多安全漏洞和逻辑错误来自比较序列化的来源字符串(或解析
location.origin),尤其是在不透明来源(沙盒 iframe、数据 URL 等)周围。Origin API 提供了浏览器的规范来源表示,并暴露了比较辅助函数,使您可以可靠地测试同源/同站关系,而无需脆弱的字符串处理。(learn.microsoft.com) - 更少的边缘情况对于 iframe 和沙盒场景:不透明来源的行为是特殊的(仅与自身同源)。Origin API 让您可以直接推理这些语义,而不是发明自定义字符串启发式。(learn.microsoft.com)
- 更简单的服务器/客户端协调:当前从头部、查询参数或
document.referrer解析来源的服务器逻辑可以简化(或至少可以验证)与浏览器使用的相同规范表示,从而减少导致身份验证/会话问题和 CSRF/CORS 错误的不匹配。(learn.microsoft.com)
简短总结
- 浏览器提供了一个一流的 Origin 对象,支持解析/序列化和稳健的来源/站点比较;浏览器已将该功能移入稳定通道,并在 HTML 规范/测试中反映该功能。(learn.microsoft.com)
立即检查清单 — 团队的实用步骤(高优先级)
- 审计来源比较和身份验证检查(1–2 天)
- 在代码库中搜索任何使用字符串相等性比较来源的逻辑(例如,
a.origin === b.origin,正则解析主机名,手动子字符串检查)。将这些地方视为风险点,并添加测试或功能标志以进行现代化。
- 在代码库中搜索任何使用字符串相等性比较来源的逻辑(例如,
- 功能检测和渐进增强(几分钟)
- 使用功能检测(
if (typeof Origin !== 'undefined'))在可用时使用原生 API,并为旧浏览器保留当前的回退。 - 示例模式(概念性,内联):
- 如果
Origin存在:const o = Origin.from(someValue); o.isSameOrigin(otherOrigin); - 否则:继续使用经过良好测试的、集中化的回退辅助函数,封装您的基于字符串的逻辑。
- 如果
- 使用功能检测(
- 更新服务器端验证和日志记录(几小时)
- 在服务器验证来源头(CORS、令牌绑定、Webhook 验证)时,记录接收到的序列化来源和在推出期间由客户端代码生成的规范来源。这将提前暴露不匹配。
- 在集成测试中加强 iframe / 沙盒行为(1–3 天)
- 为沙盒 iframe、数据/文件 URL 和重定向添加集成测试,以验证会话和 SameSite 处理。Origin API 使许多边缘情况变得明确;对其进行测试。
- 规划替换路线图(2–4 个冲刺)
- 重构关键安全路径(CSRF 检查、会话绑定、支付流程),在可行的情况下优先考虑规范的 Origin 比较。从低风险服务开始,逐步推进。
兼容性和推出说明
- Origin API 正在 Chromium 基础的稳定通道中落地(Edge 145 / Chromium 船运活动),相关的引擎工作也出现在其他浏览器引擎中;推出因浏览器和平台而异 — 在过渡期间继续使用功能检测并维护回退。(learn.microsoft.com)
- 不要假设普遍可用 — 将 API 视为渐进增强,并在您测量到客户端采用之前,用服务器端验证保护关键流程。
风险和注意事项
- 不要仅仅因为客户端报告了一个来源就替换服务器端的授权检查 — Origin API 帮助客户端减少错误,但攻击者控制的输入仍然必须在服务器端进行验证。
- 注意第三方框架和跨来源导航:
Origin对象的存在并不会改变基础的安全模型;它只是使从脚本检查模型变得更容易和更安全。
结论
- Origin API 是一个微妙的、高杠杆的网络平台改进:它减少了历史上导致安全和会话管理问题的来源/解析错误类别。首先审计来源比较,添加功能检测,并在采用达到您的用户基础后,逐步迁移关键检查以使用规范比较。(learn.microsoft.com)
来源:
来源
继续阅读
Svelte 5.52.0 为 {@html} 增加 TrustedHTML 支持,实现更安全的 Trusted Types 集成
2026年2月21日Svelte 5.52.0(2026年2月18日)为 {@html} 表达式添加 TrustedHTML 支持,使应用能够在不进行字符串强制转换的情况下与浏览器的 Trusted Types 互操作——对 SSR 和客户端渲染的应用来说,XSS 防护很重要。
Next.js 16 使 Turbopack 成为开发和构建的稳定默认选项
2026年2月20日Next.js 16 将 Turbopack 调整为稳定/默认,提升对 Node.js 的最低版本要求,并发布面向生产的缓存原语——全栈团队现在必须改变的事项。
Vite 8.0.0‑beta.14 增加服务器端 .wasm?init(WASM 服务器端渲染)并将 Rolldown 更新至 1.0.0‑rc.4
2026年2月19日Vite 的 2026 年 2 月 12 日测试版引入对预初始化 WebAssembly 模块的 SSR 支持,并将打包器集成升级至 Rolldown 1.0.0‑rc.4——这是一项实用的变更,能够减少客户端 hydration 的工作量并提升 Wasm 密集型服务器渲染的工具链稳定性。