如何屏蔽IFRAME中的起源?

时间:2014-05-06 15:34:47

标签: javascript iframe xss browser-security

我有一个商业网络应用,需要从其他各种网站提取信息。对于大多数站点,用户只是指示服务器提取数据(使用.NET的HttpRequest或Selenium)。

但是对于一些不友好的Javascript密集型网站,我们的用户必须手动访问该网站,导航到正确的位置,然后复制并粘贴到我们的应用程序中。

除了bookmarklet之外,我们的页面是否以任何方式显示加载了源网站的IFRAME,允许用户在框架内导航,然后捕获IFRAME的正文?

由于IFRAME中的站点不在同一个域(甚至不是关闭),我似乎无法解决浏览器跨站点脚本限制。我尝试过使用HTML5的“沙盒”功能,但它似乎只允许(从“允许 - 同源”)其他方式进行通信,从IFRAME到主机站点,这不是'对我有用。此外,如果相关网站试图将其框架加载到顶层上下文,它将无效。

我理想的是一个解决方案,允许浏览器被配置为隐式信任我的网站(它是一个内部网应用程序),并允许它访问任何框架的内容。这至少会让我陷入困境。如果我可以让iframe重新定义“顶部”上下文作为自己的框架,那么加分点就可以在框架内正常运行。

1 个答案:

答案 0 :(得分:2)

我通过许多屏幕抓取项目(抓取JS重页)找到的最佳方法是创建用户脚本或Greasemonkey脚本,在自己的IP空间中设置一些虚拟机(用于保护)并提供它们要从远程程序访问的站点列表:

  1. 按设定的时间间隔检查队列
  2. 使用Greasemonkey等的请求页面
  3. 捕获内容并发送到远程程序进行处理
  4. 你不能使用iframe方法而且你会碰到一条试图走这条路的墙,我所描述的方法已经用于许多大规模的刮削项目。