务必仔细检查从网站上复制的内容

2025-06-10

务必仔细检查从网站上复制的内容

假设您正在遵循互联网上的指南,它提供了安装包的命令。

sudo apt install package

你毫不犹豫地复制了命令,并快速将其粘贴到终端中。现在想象一下,你的剪贴板中还有另一个命令,如下所示:

sudo rm -rf / *实际上不要运行此命令!

此命令会强制递归删除从根目录开始的所有文件和文件夹。如果您在终端中粘贴包含换行符的文本,它将自动执行。如果您的终端具有提升权限,由于您已在同一会话中执行过 sudo 命令,因此它不会要求您输入密码。

再见了宝贵的数据!

怎么会这样呢?

网站可以通过三种方式诱骗您复制其他内容:

  1. 通过使用Document 接口中的execCommand方法
  2. 通过在复制事件中更改剪贴板数据
  3. 通过在可见文本中放置隐藏文本和/或屏幕外文本

execCommand 方法

如果您曾经从网站复制过命令,您可能已经注意到有些网站提供了一个按钮,单击后即可为您复制命令。

这些按钮使用Document接口中的execCommand方法。该方法已被弃用,并且可能随时被移除,但目前仍可正常工作。

顾名思义,它允许您执行命令。您可以执行的命令之一是copy。通过执行此命令,您可以将当前选择复制到剪贴板。

下面给出一个例子:

const hiddenInput = document.querySelector("input");
hiddenInput.value = "Text that should be copied";
hiddenInput.select();
document.execCommand("copy");
Enter fullscreen mode Exit fullscreen mode

棘手的是,恶意网站可以让该按钮复制与您期望的完全不同的内容。

因此,如果您访问了一个不信任的网站并使用了其中一个按钮,请务必仔细检查剪贴板中的内容,将其粘贴到安全的地方,例如记事本。

在复制事件中更改剪贴板数据

每当您使用CTRL + C或上下文菜单复制内容时,都会触发copy 事件。此事件的处理程序可以使用以下代码修改剪贴板内容:

const handleCopyEvent = (event: ClipboardEvent) => {
  // Set the clipboard contents to a string of your choice.
  event.clipboardData.setData(
    "text/plain",
    "sudo rm -rf /" // DON'T RUN THIS COMMAND
  );

  // Prevent the default action from overriding the data
  // we just set.
  event.preventDefault();
};
Enter fullscreen mode Exit fullscreen mode

代码应该不言自明,但如果您需要更详细的解释,我推荐您阅读Louis Petrik 撰写的《Stop Rashly Copying Commands From Websites》 ,我最初就是从那里了解到这个漏洞的。其中还包含一个示例以及一个我创建的浏览器扩展的链接。稍后我会详细介绍。

将隐藏文本和/或屏幕外文本放置在可见文本中

当你在网站上选中文本时,它会被高亮显示。你肯定希望高亮显示的部分正是你要复制的内容。

问题是,在某些情况下,即使没有突出显示,不可见或屏幕外的文本也会成为您选择的一部分。

隐藏文本但仍允许选择文本的一些示例是:

  • 使用font-size: 0
  • 使用绝对或固定定位将文本移出屏幕
  • 使用绝对或固定定位结合transform: scale(0)

仅举几个例子。

这里有一个例子来演示这个技巧。你在那里看到的命令包含一个span移出屏幕的命令。

如何保护自己?

一个好的做法是,始终仔细检查剪贴板中的内容,先将其粘贴到安全的环境中。但是,如果您的浏览器可以在剪贴板数据被篡改时发出警告,那会怎样呢?不妨试试浏览器扩展程序。

认识 Copy Guard

我创建了一个简单的浏览器扩展程序,它就是为了实现这个目的!它叫做Copy Guard,它的源代码可以在我的 GitHub上找到。使用我的扩展程序,你可以让你的浏览器在网站使用第二种或第三种方法时发出警告。

它注入了一个监听复制事件的脚本。每当你使用 CTRL+C 或上下文菜单复制内容时,它都会获取你当前的文本选择,并将其与剪贴板中的数据进行比较。除此之外,它还会检查你的文本选择是否包含任何隐藏或屏幕外的元素。

适用于ChromeFirefoxEdge

关于加密货币的说明

当我在 Reddit 上发布我的浏览器扩展程序时,有人告诉我,加密货币社区里也会发生类似的事情,这完全说得通。一个网站可能会让你复制一个完全不同的钱包地址。如果你把你珍贵的加密货币发送到这个地址,它可能会永远丢失。

一位Reddit 用户也曾遇到过类似的事情。虽然这位用户的电脑上可能装有恶意软件,但这种情况也可能发生在网络上,即使没有恶意软件。

结论

网站可以通过多种方式诱骗您复制与您预期不同的内容。

务必仔细检查你的剪贴板。我的浏览器扩展程序至少可以在出现问题时发出警告,但一个好的做法是先将你的选择粘贴到安全的环境中,然后再粘贴到终端中。

至少对你不信任的网站这样做。

鏂囩珷鏉ユ簮锛�https://dev.to/ruudje/always-double-check-what-you-copy-from-websites-2kg3
PREV
为什么 Kubernetes 如此难?
NEXT
从零到英雄:开源项目入门必备条件入门指南如何克服入门恐惧?感谢阅读 GenAI LIVE!| 2025 年 6 月 4 日