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

Wolfgang Beyer
Wolfgang Beyer

什么是自定义 XSS 攻击?

自 XSS(自跨站脚本攻击)是一种社会工程学攻击,会诱骗您在 Web 浏览器中执行恶意代码。与常规的 XSS 攻击不同,后者依赖于 Web 应用中的漏洞,让攻击者能够注入恶意代码,而自 XSS 攻击则依赖于您自己的潜在代码执行操作。

自 XSS 攻击通常涉及攻击者诱骗您将恶意代码复制并粘贴到浏览器的开发者工具控制台中。攻击者通常会通过承诺某种奖励来实现这一点。这可能是因为:

  • 承诺该代码可让您使用隐藏功能或获得虚拟奖励。
  • 假装该代码是安全测试或 bug 修复。
  • 承诺该代码可用于入侵网站,以便您牟利。

您执行代码后,攻击者便可控制您的账号。这可能会导致攻击者:

  • 盗取您的个人信息,例如姓名、地址和信用卡号。
  • 冒充您发布消息或评论。
  • 掌控您的社交媒体账号。
  • 向其他用户传播恶意软件。

Chrome 开发者工具如何尝试缓解自 XSS 攻击?

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

开发者通常不会先快速查看代码的用途,然后再复制在网络上某个位置找到的代码,将其粘贴到 DevTools 中并执行。大多数开发者都非常清楚,执行在网络上不知名角落中找到的代码会带来安全风险。

Chrome 开发者工具相信开发者知道自己在做什么。我们不希望在用户复制和粘贴代码时,速度变慢或分散他们的注意力。

我们认为,非开发者更容易成为自定义 XSS 攻击的受害者。为了保护您,我们认为在您执行可能危险的操作时进行干预是可接受且有益的。当 Chrome 开发者工具检测到不熟练的用户尝试将代码粘贴到开发者工具中时,会停止并显示警告。

在什么情况下 DevTools 会显示自定义 XSS 警告?

开发者工具使用非常简单的启发词语来决定是否显示自定义 XSS 警告:该启发词语基于用户个人资料的控制台历史记录。

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

自定义 XSS 警告是什么样的?

当缺少经验的用户尝试将代码粘贴到控制台时,此操作会被屏蔽,控制台会改为显示警告。

控制台中的自 XSS 警告。

您可以替换此警告并启用粘贴功能,但需要输入“允许粘贴”才能执行此操作。

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

“来源”面板中的自定义 XSS 模态对话框。

再次强调,仅关闭此对话框不足以启用粘贴功能。如需替换此警告,您需要在输入字段中输入“允许粘贴”。

这是一次性设置吗?

是的,一旦您决定允许粘贴,就不会再受到自定义 XSS 警告的困扰。

我们希望在实用性和烦扰性之间取得良好的平衡。通过增加摩擦,我们可以提高您阅读警告的可能性,从而降低成功实施自定义 XSS 攻击的可能性。

Chrome 开发者工具会保留一个标志,用于指定是否在 Chrome 个人资料中显示自定义 XSS 警告。因此,如果您创建了新配置文件,并立即开始将代码粘贴到 DevTools 中,系统会阻止粘贴,并改为显示自定义 XSS 警告。

您能否为自动化测试停用此功能?

但自动化测试呢?许多测试工具都会为每次运行的测试创建一个新的临时配置文件。因此,如果您使用开发者工具调试自动化测试,则最初无法将内容粘贴到控制台

如需解决此问题,请执行以下任一操作:

  • 使用 Chrome 测试版,这是一种专为测试和自动化而设计的 Chrome 变体。自定义 XSS 警告已关闭。

  • 对于其他 Chrome 发布渠道,请将 --unsafely-disable-devtools-self-xss-warnings 命令行标志传递给 Chrome,以完全停用自定义 XSS 警告对话框。

总结

您对这种缓解自 XSS 攻击的策略有何看法?如果您有任何意见或建议,请在此bug 中添加评论,或通过以下任一方式与我们联系。

特别是,如果您负责维护的网站会通过控制台日志警告自定义 XSS 攻击,我们非常乐意与您讨论如何协同努力或衡量自定义 XSS 缓解措施的影响。

下载预览渠道

不妨考虑将 Chrome Canary 版开发者版Beta 版用作默认开发浏览器。通过这些预览版渠道,您可以使用最新的 DevTools 功能、测试尖端的 Web 平台 API,并帮助您在用户发现问题之前发现网站上的问题!

与 Chrome DevTools 团队联系

您可以使用以下选项讨论与 DevTools 相关的新功能、更新或任何其他内容。