务必仔细检查从网站上复制的内容
假设您正在遵循互联网上的指南,它提供了安装包的命令。
sudo apt install package
你毫不犹豫地复制了命令,并快速将其粘贴到终端中。现在想象一下,你的剪贴板中还有另一个命令,如下所示:
sudo rm -rf /
*实际上不要运行此命令!
此命令会强制递归删除从根目录开始的所有文件和文件夹。如果您在终端中粘贴包含换行符的文本,它将自动执行。如果您的终端具有提升权限,由于您已在同一会话中执行过 sudo 命令,因此它不会要求您输入密码。
再见了宝贵的数据!
怎么会这样呢?
网站可以通过三种方式诱骗您复制其他内容:
- 通过使用Document 接口中的execCommand方法
- 通过在复制事件中更改剪贴板数据
- 通过在可见文本中放置隐藏文本和/或屏幕外文本
execCommand 方法
如果您曾经从网站复制过命令,您可能已经注意到有些网站提供了一个按钮,单击后即可为您复制命令。
这些按钮使用Document接口中的execCommand方法。该方法已被弃用,并且可能随时被移除,但目前仍可正常工作。
顾名思义,它允许您执行命令。您可以执行的命令之一是copy
。通过执行此命令,您可以将当前选择复制到剪贴板。
下面给出一个例子:
const hiddenInput = document.querySelector("input");
hiddenInput.value = "Text that should be copied";
hiddenInput.select();
document.execCommand("copy");
棘手的是,恶意网站可以让该按钮复制与您期望的完全不同的内容。
因此,如果您访问了一个不信任的网站并使用了其中一个按钮,请务必仔细检查剪贴板中的内容,将其粘贴到安全的地方,例如记事本。
在复制事件中更改剪贴板数据
每当您使用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();
};
代码应该不言自明,但如果您需要更详细的解释,我推荐您阅读Louis Petrik 撰写的《Stop Rashly Copying Commands From Websites》 ,我最初就是从那里了解到这个漏洞的。其中还包含一个示例以及一个我创建的浏览器扩展的链接。稍后我会详细介绍。
将隐藏文本和/或屏幕外文本放置在可见文本中
当你在网站上选中文本时,它会被高亮显示。你肯定希望高亮显示的部分正是你要复制的内容。
问题是,在某些情况下,即使没有突出显示,不可见或屏幕外的文本也会成为您选择的一部分。
隐藏文本但仍允许选择文本的一些示例是:
- 使用
font-size: 0
- 使用绝对或固定定位将文本移出屏幕
- 使用绝对或固定定位结合
transform: scale(0)
仅举几个例子。
这里有一个例子来演示这个技巧。你在那里看到的命令包含一个span
移出屏幕的命令。
如何保护自己?
一个好的做法是,始终仔细检查剪贴板中的内容,先将其粘贴到安全的环境中。但是,如果您的浏览器可以在剪贴板数据被篡改时发出警告,那会怎样呢?不妨试试浏览器扩展程序。
认识 Copy Guard
我创建了一个简单的浏览器扩展程序,它就是为了实现这个目的!它叫做Copy Guard,它的源代码可以在我的 GitHub上找到。使用我的扩展程序,你可以让你的浏览器在网站使用第二种或第三种方法时发出警告。
它注入了一个监听复制事件的脚本。每当你使用 CTRL+C 或上下文菜单复制内容时,它都会获取你当前的文本选择,并将其与剪贴板中的数据进行比较。除此之外,它还会检查你的文本选择是否包含任何隐藏或屏幕外的元素。
关于加密货币的说明
当我在 Reddit 上发布我的浏览器扩展程序时,有人告诉我,加密货币社区里也会发生类似的事情,这完全说得通。一个网站可能会让你复制一个完全不同的钱包地址。如果你把你珍贵的加密货币发送到这个地址,它可能会永远丢失。
一位Reddit 用户也曾遇到过类似的事情。虽然这位用户的电脑上可能装有恶意软件,但这种情况也可能发生在网络上,即使没有恶意软件。
结论
网站可以通过多种方式诱骗您复制与您预期不同的内容。
务必仔细检查你的剪贴板。我的浏览器扩展程序至少可以在出现问题时发出警告,但一个好的做法是先将你的选择粘贴到安全的环境中,然后再粘贴到终端中。
至少对你不信任的网站这样做。
鏂囩珷鏉ユ簮锛�https://dev.to/ruudje/always-double-check-what-you-copy-from-websites-2kg3