【问题标题】:Executing JavaScript on an iframe's contents from a different domain对来自不同域的 iframe 内容执行 JavaScript
【发布时间】:2012-10-20 12:09:36
【问题描述】:

这是否被浏览器拒绝?有可能吗?

如果是这样,是浏览器错误允许它发生吗?我注意到了这一点:

http://html5sec.org

如何关闭这些错误并阻止它们在您的网站上运行?我可以检测是否有人试图从另一个域执行 javascript?

谢谢。

【问题讨论】:

  • 例如,如果您在您的网站中包含 google 广告或 fb 小部件或任何内容,这意味着您信任他……请您不要包含此代码,如果您尝试停止该代码例如不会显示广告,那么重点是什么?
  • 我不是说包括其他 JS,我是说他们可以创建自己的网站并将我的网站加载到 iframe 中,然后使用 JS 进行操作。
  • ... 我找到了一个解决方案,但我不知道是否适用于所有浏览器 developer.mozilla.org/en-US/docs/… 但如果您在他们的网站上展示您的广告,最好将其添加为合同中的条款或条件。 ..我没有找到任何其他解决方案

标签: javascript security browser-bugs


【解决方案1】:

Javascript 由浏览器执行,而不是服务器。如果用户愿意,他们可以在没有 iframe 的网站上执行 javascript。 (在地址栏中输入javascript:alert('hello');)。

您无法阻止它,因为它是在客户端上执行的,而不是在您的网站本身上。以一种方式设计您的网站,无论他们使用 javascript 做什么,都不会影响您网站的完整性。使用服务器端身份验证和会话,清理您的数据库输入,不要在客户端执行任何基于安全性的操作。

【讨论】:

  • 但是对于像javascript onClick事件这样的按钮动作,它们可以通过javascript调用。可能吗?有人可以在其中加载包含我的网站的 iframe 并调用 onClick 事件吗?无论我做什么,这都是一个安全风险。
  • 是的,这很简单。 document.getElementById('myButton').click()
  • 如果它在 iframe 中,则不能这样做。
  • 这应该可以工作:$(document).ready(function() { var frame = $('#iframeID').get(0).contentDocument; $('#childBtn', frame).click() });
  • 在 HTA 中,您可以在 iFrame 中操作任何您想要的内容
猜你喜欢
  • 1970-01-01
  • 2011-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-27
  • 1970-01-01
  • 1970-01-01
  • 2015-10-01
相关资源
最近更新 更多