显然,网站可以使用 JavaScript 剪贴板 API 覆盖剪贴板,而无需向用户发出任何通知——正如 Reddit 帖子中所讨论的那样——这有点吓人。
有没有办法禁用程序剪贴板访问,除非用户通过扩展或某些配置设置授予权限?理想情况下,我正在寻找类似网站如何需要权限才能自动播放或访问音频或摄像头的东西。但如果这不可能,JavaScript Greasemonkey/Violentmonkey 脚本也可以阻止剪贴板访问并通知我任何剪贴板访问尝试。
在 Firefox 文档中,“MDN 剪贴板 API“ 它指出:
“对剪贴板内容的访问受权限 API 控制:当页面处于活动选项卡中时,会自动授予剪贴板写入权限。必须请求剪贴板读取权限,您可以通过尝试从剪贴板读取数据来执行此操作。”
禁用剪贴板 API 访问并不能安全地将命令复制粘贴到 shell 中,因为你仍然可以让用户使用 CSS 复制意外的文本,但这是一个开始。
答案1
Firefox 有一个about:config
设置叫做dom.event.clipboardevents.enabled
,它允许 Firefox 发出oncopy
、oncut
和onpaste
事件,网站可以使用这些事件来修改剪贴板。您可以将其设置为false
以禁用所有网站对剪贴板 API 的访问;您不能使用它逐个授予网站访问权限。将其设置为 会false
破坏某些功能,例如在 Discord 上粘贴图像。
此外,网站可以使用已弃用的Document.execCommand()
copy
和命令。可以通过将首选项设置为来cut
禁用对此的支持。about:config
dom.allow_cut_copy
false
还有一项about:config
设置dom.events.asyncClipboard.dataTransfer
,默认情况下处于禁用状态。如果启用,它将允许网站异步读取剪贴板(在获得用户许可后),并随时写入剪贴板,而无需等待oncopy
//oncut
事件onpaste
。