我的网站加载了iframe
来自其他域的内容。我想给我的网站用户带来“截图”的能力。理想情况下,我想捕获iframe
的一部分,并在我的网站上的div
或svg
中呈现读取的像素。
但我不确定Javascript是否能够做到这样的事情。 Javascript可以读取iframe
,div
或屏幕的任何部分的像素吗?
答案 0 :(得分:0)
浏览器不允许你这样做,这是一个例子:
假设你运行了一个名为nefarious-site.com的域名。在首页上,有一个<iframe>
src="https://popular-mail-site.com/"
。由于邮件站点非常受欢迎,并且因为用户已经登录到热门邮件站点,他们的电子邮件将加载到iframe中。
当所有内容完成加载后,nefarious-site使用JavaScript“截取”iframe并通过XHR将图像发送到恶意站点服务器。繁荣。 Nefarious网站现在已经窃取了有关用户邮箱的信息,甚至无需解决破解用户密码的问题。
当然,有很多情况下这不起作用 - 如果用户没有登录或没有帐户,nefarious-site将获得登录表单或错误文本的无用屏幕截图。但有时它会奏效,而且总比没有好。
所以,是的,这就是为什么浏览器非常保守让你做那样的事情。
(顺便说一下,设置X-Frame-Options
标头以防止内容首先在<iframe>
中呈现,这可能是热门邮件网站的最佳利益,但这既不是在这里也不是那里。)