Chrome 开发者工具如何帮助抵御自跨站脚本攻击

沃尔夫冈·拜尔
Wolfgang Beyer

什么是自跨站脚本攻击?

Self-XSS(自跨站脚本攻击)是一种社交工程攻击,会诱骗您在网络浏览器中执行恶意代码。常规的 XSS 攻击依靠 Web 应用中的漏洞来让攻击者注入恶意代码,而自 XSS 攻击则依赖于您自己潜在的代码执行操作。

自跨站脚本攻击通常涉及诱使您将恶意代码复制粘贴到浏览器的开发者工具 Console 中的攻击。攻击者通常通过承诺某种奖励来实现此目的。这可能是:

  • 向你承诺该代码会让你使用隐藏的功能或获得虚拟奖励。
  • 假装代码是安全测试或 bug 修复。
  • 承诺该代码允许黑客入侵网站以图谋取利益。

执行代码后,攻击者就可以控制您的帐号。这样一来,攻击者就可以:

  • 窃取您的个人信息,如姓名、地址和信用卡号。
  • 代表您发布未经授权的消息或评论。
  • 掌控你的社交媒体帐号。
  • 将恶意软件传播到其他用户。

Chrome 开发者工具如何尝试缓解自跨站脚本攻击?

允许用户将代码粘贴到开发者工具中,然后执行,本身存在风险。但它也是 Chrome 开发者工具的核心功能之一。因此,我们必须在减少潜在的自跨站脚本攻击与干扰只想调试网站的开发者的工作之间取得平衡。

开发者通常不会直接复制自己在网上找到的代码,然后将其粘贴到开发者工具中并执行,无需先快速查看代码的用途。大多数开发者都非常清楚执行在网络一个粗略的角落处发现的代码的安全风险。

Chrome 开发者工具让开发者能够知道他们正在执行的操作。我们不想在他们复制和粘贴代码时拖慢他们或以任何方式分散他们的注意力。

我们认为,非开发者成为自 XSS 攻击的风险要高得多。为了保护您的安全,我们认为在您执行有潜在危险的事情时,中断您的操作是可以接受且有益的。当 Chrome 开发者工具检测到没有经验的用户正尝试将代码粘贴到开发者工具中时,它会停止运行并显示警告。

开发者工具何时会显示 self-XSS 警告?

开发者工具使用非常简单的启发法来决定是否显示自我跨站脚本警告:基于您用户个人资料的控制台历史记录。

如果您的配置文件的控制台历史记录中至少有 5 个条目,则开发者工具不会再显示任何警告或弹出式窗口。控制台历史记录是指您在控制台中输入和执行的命令的列表。当您将光标置于控制台中并反复按向上箭头键后,会看到这些命令。

自跨站脚本警告是什么样的?

如果经验不足的用户尝试将代码粘贴到管理中心,系统会阻止此操作,并向管理中心显示警告。

控制台中的 self-XSS 警告。

您可以覆盖此警告并启用粘贴功能,但此操作需要输入“allow looking”(允许粘贴)。

如果经验不足的用户将代码粘贴到开发者工具代码编辑器(例如 Sources 面板)中,用户体验会非常相似。您将看到一个模态对话框,而不是警告。

Sources 面板中的 self-XSS 模态对话框。

再次说明,仅关闭此对话框不足以启用粘贴功能。如要忽略警告,您需要在输入字段中输入“allow looking”(允许粘贴)。

这是一次性设置吗?

是的,一旦您决定允许粘贴,就再也不会再受到 Self-XSS(自跨站脚本)警告的困扰。

我们希望这样能够在实用性和干扰性之间实现良好的平衡。通过增加阻力,我们提高了您阅读警告的可能性,从而降低了自 XSS 攻击成功的可能性。

Chrome 开发者工具保留一个标记,用于指定是否在 Chrome 个人资料中显示自我 XSS 警告。因此,如果您创建新的配置文件并立即开始将代码粘贴到开发者工具中,则粘贴操作将被阻止,并且会显示 self XSS 警告。

能否将其停用以自动执行测试?

但是自动化测试怎么样?许多测试工具会为每次测试运行创建全新的临时配置文件。因此,如果您使用开发者工具调试自动化测试,则最初会禁止将测试粘贴到 Console 中。为防止出现这种情况,请使用 Chrome for Testing。Chrome for Testing 是专为测试和自动化设计的 Chrome 版本,会关闭 XSS 警告。

总结

您觉得这种缓解自跨站脚本攻击的策略怎么样?如果您有任何意见或建议,请为此 bug 添加评论,或者通过以下某种方式与我们联系。

特别是如果您访问的网站会通过控制台日志对自跨站脚本攻击发出警告,我们很乐意探讨调整我们的工作或衡量自跨站脚本缓解措施的影响。

下载预览渠道

您可以考虑将 Chrome Canary 版Dev 版Beta 版用作默认开发浏览器。通过这些预览渠道,您可以使用最新的开发者工具功能,测试先进的网络平台 API,并在用户采取行动之前发现网站上的问题!

与 Chrome 开发者工具团队联系

使用以下选项讨论博文中的新功能和变化,或讨论与开发者工具有关的任何其他内容。

  • 通过 crbug.com 提交建议或反馈。
  • 使用开发者工具中的更多选项   了解详情   > Help > Report a DevTools issues来报告开发者工具问题。
  • 发推文:@ChromeDevTools
  • 请在 YouTube 视频或“开发者工具提示”YouTube 视频中留言说明“开发者工具的新变化”。