【问题标题】:How to simulate keystrokes in a browser to control cross-domain iframe using JavaScript?如何在浏览器中模拟击键以使用 javascript 控制跨域 iframe?
【发布时间】:2013-05-23 11:42:00
【问题描述】:

我对模拟方向键特别感兴趣。

虽然有很多方法可以模拟按键,比如在这个 Keydown Simulation in Chrome fires normally but not the correct key

如果它在 iframe 上则不起作用

【问题讨论】:

  • 它在 iframe 上不起作用是有原因的......
  • 我不认为这是可以做到的。 Same Origin Policy 将首先阻止您注入事件。
  • 如果您不向我们提供反馈,像我这样提供答案的人很难知道您是否解决了问题或仍有问题。怎么了?

标签: javascript html iframe javascript-events


【解决方案1】:

如果您可以从 iframe 中的页面修改 html,则可以使用所谓的跨文档消息传递。 http://caniuse.com/#feat=x-doc-messaging 您将从顶部框架触发一个事件,而 iframe 页面将接收该事件并解释输出并触发一个事件(即您的框架内的击键)。

如果您希望它在旧版浏览器上工作,有一个 jquery pluing 可以在新旧浏览器上工作:http://benalman.com/projects/jquery-postmessage-plugin/

【讨论】:

    【解决方案2】:

    想象以下场景。

    • Bob 正在上网并访问您的网站。
    • Eve 的站点打开一个 iframe,其中包含来自 http://bobsbank.com 的内容
    • Eve 的网站明星向该网站注入击键和点击,将 Bob 的所有资金转入 Eve 的帐户

    这种情况就是为什么你试图做的事情是不可能的。

    same origin policy 会阻止它。

    【讨论】:

    • +1,正是我的观点。这种攻击是典型的CSRF对策无法阻止的(事实上,afaik,所有的CSRF对策实际上都是基于容器框架无法修改containee的内容)。
    • @raina77ow 正确 :) 值得一提的是,您无法真正模拟同一域中的击键,甚至无法使用 JavaScript 在您自己的页面中模拟击键,只能预测他们尝试做什么并采取相应的行动,因为DOM 事件模型将它们视为“不受信任的事件”(因为它们不是用户直接交互的结果)。 w3.org/TR/DOM-Level-3-Events/#trusted-events
    猜你喜欢
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    相关资源
    最近更新 更多