子域上的iframe是否提供了足够的JS沙箱?

Ale*_*yne 6 javascript security iframe sandbox

假设我有一个页面example.com.此页面包含一个iframe显示sandbox.example.com.

---------------------------
| example.com             |
| ----------------------- |
| | sandbox.example.com | |
| |   (<canvas> + js)   | |
| ----------------------- |
---------------------------
Run Code Online (Sandbox Code Playgroud)

沙箱将执行可能有潜在危险的脚本.沙盒将是我自己的JavaScript的混合,与来自其他来源的不受信任的JavaScript代码一起运行.

我会暴露更少的应用程序路由sandbox.example.com,因此相同的源策略应该阻止对任何敏感数据或操作的任何访问.像会话cookie被盗这样的东西,以及经过身份验证的ajax请求更改密码是我试图避免的问题类型.

我的想法是拥有一个由我提供的可扩展渲染引擎,该引擎由其他人的代码扩展,所有这些引擎都被抛入单个页面呈现到单个画布.

这会被认为是安全的吗?如果您已登录example.com,并且在sandbox.example.com其中执行不受信任的JS 运行iframe ,您是否会面临任何类型的攻击?

子域是否足够?或者如果它是一个完全不同的域,它会安全吗?

Jim*_*ery 0

不受信任且不安全的 Javascript 存在相关风险 - 无论它是否在 iframe 中运行。然而,同源策略规定沙箱中的任何脚本都不能干扰example.com.