各位好,今天咱们聊聊一个挺时髦但又藏着不少坑的玩意儿:JavaScript 的 ShadowRealm。这东西号称能搞出“安全边界”,听起来是不是很牛逼?但实际上,它也可能变成“特权提升”的帮凶。咱们今天就来扒一扒它的底裤,看看它到底能干啥,又有哪些地方需要特别小心。 开场白:ShadowRealm 是个啥? 简单来说,ShadowRealm 就像一个 JavaScript 的“平行宇宙”。在这个宇宙里,你可以加载代码,这些代码运行在一个全新的、隔离的全局作用域里。它有自己的全局对象(比如 window,globalThis,不过通常是 undefined),自己的内置对象(比如 Array,Object),甚至还有自己的模块加载机制。 为啥要有 ShadowRealm? 这就要说到“安全”这个老生常谈的话题了。想象一下,你正在开发一个 Web 应用,需要加载一些第三方代码。这些代码可能是广告、插件,或者是一些你不太信任的组件。如果你直接把这些代码放到你的主线程里运行,它们就有可能访问你的敏感数据、篡改你的页面内容,甚至搞一些更坏的事情。 ShadowRealm 的出现,就是为了解决这 …
继续阅读“JS `ShadowRealm` (提案) `Security Boundaries` 与 `Privilege Escalation` 风险”