【发布时间】:2015-04-17 15:06:20
【问题描述】:
在我来自 donain A 的网页中,我在 iframe 中显示了来自域 B 的另一个网站。我认为网站B可以选择一些新鲜的颜色,所以我想编辑body的背景颜色并将其更改为蓝色。
如果我通过获取 iframe 的 DOM,然后编辑正文的背景颜色来尝试使用 javascript,我会收到安全错误,因为网站 B 在另一个域上。
如果打开开发者工具 (F12) 我只是在那里编辑 dom 就可以了。
所以我真的很困惑:为什么浏览器允许我手动编辑 dom,而不是通过 javascript?显然,这个跨域策略应该暗示的任何类型的安全措施都会被任何可以按 F12 的人所破坏,因此浏览器阻止访问是没有意义的。
或者,我可以用我的服务器抓取网站 B,然后将(非法)检索到的 HTML 放入我自己的网站(颜色更好)。我再次绕过了跨域策略,因此做了跨域策略禁止我做的事情。
作为一个相关问题,有没有办法在 iframe 中使用 javascript 更改元素的颜色而不会出现跨域错误?
【问题讨论】:
-
因为 Javascript 可以是邪恶的并攻击你,而浏览器假设你不会是邪恶的并攻击自己。 (这个假设是not always true)
-
@SLaks 湿件,总是最薄弱的环节 :(
-
@adeneo 我了解该政策,但为什么浏览器工具仍让我绕过它?此外,我也可以抓取网站并对其进行编辑。政策在这里有什么好处?
标签: javascript html iframe xss