gpt4 book ai didi

cross-domain - 保护浏览器助手对象

转载 作者:行者123 更新时间:2023-12-04 07:54:23 26 4
gpt4 key购买 nike

我目前正在构建浏览器帮助对象。

的事情之一BHO要做的是绕过跨域策略进行跨站请求。

  • 为此,我公开了 __MyBHONameSpace.Request使用 WebClient 的方法内部。
  • 然而,我想到任何使用我的 BHO 的人现在到处都有 CSRF 漏洞,因为聪明的攻击者现在可以从我客户的计算机发出任意请求。

  • 有什么巧妙的方法可以缓解这种情况吗?

    最佳答案

    完全防止此类攻击的唯一方法是将页面 JavaScript 的执行上下文与您的扩展程序的 JavaScript 代码分开。

    当我研究这个问题时,我发现 Internet Explorer 确实提供了一种创建这种上下文的方法,即通过 IActiveScript .我还没有实现这个解决方案,原因如下:

  • 缺乏将 IActiveScript 与 BHO 相结合的文档/示例。
  • 对 future 缺乏确定性(例如 https://stackoverflow.com/a/17581825 )。
  • 可能的性能影响(IE 以其卓越的性能而闻名,每个页面的两个 JavaScript 引擎实例如何影响浏览速度?)。
  • 维护成本:基于非常合理的假设,我已经有了一个运行良好的现有解决方案。因为我不确定替代方法(使用 IActiveScript )是否没有错误和面向 future (见 2),所以我决定放弃这个想法。

  • 我所做的是:
  • 接受非常坚定的攻击者将能够访问(部分)我的扩展程序的功能。
  • @Benjamin询问对持久存储 API 的访问是否会对用户的隐私构成威胁。我认为这种风险是可以接受的,因为强制执行存储配额,并且所有存储的数据在使用之前都经过验证,并且它不会为攻击者提供更多攻击用户的工具。如果攻击者想通过持久存储跟踪用户,他们可以使用 localStorage在某个域上,并通过 <iframe> 与该域通信使用 postMessage API。此方法适用于所有浏览器,而不仅仅是安装了我的 BHO 的 IE,因此当有一种方法已经适用于所有现代浏览器(IE8+ )。
  • 限制扩展的功能:
  • 扩展程序只能在需要激活的页面上激活。这大大减少了攻击面,因为攻击者更难在 https://trusted.example.com 上运行代码。并诱骗用户访问https://trusted.example.com .
  • 创建和执行 列入白名单扩展级别的跨域访问 URL(在 BHO 内的 native 代码(例如 C++)中)。
  • 对于敏感的 API,将其暴露于非常小的可信 URL 集(同样,不是在 JavaScript 中,而是在 native 代码中)。
  • 处理跨域功能的扩展部分不与 Internet Explorer 共享任何状态。 Cookie 和授权 header 从请求和响应中剥离。因此,即使攻击者设法访问我的 API,由于缺少 session 信息,他们也无法在其他网站上冒充用户。
    这并不能防止使用请求者的 IP 进行身份验证的站点(例如 Intranet 站点或路由器),但此攻击向量已经被正确实现白名单所涵盖(参见步骤 2)。

  • “在 native 代码中执行”并不意味着“在 native 代码中执行硬编码”。您仍然可以提供包含元数据和 JavaScript 代码的更新。 MSVC++ (2010) 支持 ECMAScript 风格的正则表达式 <regex> ,这使得实现基于正则表达式的白名单变得非常容易。

    如果您想继续使用 IActiveScript ,您可以在 ceee的源代码中找到示例代码, Gears (均已停产)或任何其他试图增强 IE 脚本环境的项目。

    关于cross-domain - 保护浏览器助手对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20592416/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com