假设我在 example.com
上有一个页面。此页面包含一个显示 sandbox.example.com
的 iframe
。
---------------------------
| example.com |
| ----------------------- |
| | sandbox.example.com | |
| | (<canvas> + js) | |
| ----------------------- |
---------------------------
沙盒将执行可能具有潜在危险的脚本。沙箱将混合我自己的 JavaScript,与来自其他来源的不受信任的 JavaScript 代码一起运行。
我会将我的应用程序路由公开到 sandbox.example.com
的数量要少得多,因此同源策略应该阻止对任何敏感数据或操作的任何访问。诸如 session cookie 盗窃和经过身份验证的 ajax 请求更改密码之类的事情是我试图避免的问题类型。
我的想法是拥有一个可扩展的渲染引擎,由我提供,由其他人的代码扩展,全部投入到单个页面渲染到单个 Canvas 中。
那么这会被认为是安全的吗?如果您登录到 example.com
,并在 sandbox.example.com
上运行 iframe,其中执行不受信任的 JS,您是否会面临任何类型的攻击风险?
子域是否足够?或者,如果它是一个完全不同的域,它是否安全?
最佳答案
存在与不受信任和不安全的 Javascript 相关的风险 - 无论它是否在 iframe 中运行。然而 Same Origin Policy指示沙箱中的任何脚本都不能干扰 example.com
中的任何内容。
关于javascript - 子域上的 iframe 是否提供足够的 JS 沙箱?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17415621/