目前似乎没有纯JavaScript方法可以使用大多数现代浏览器访问系统剪贴板,Internet Explorer是个例外。在许多其他Stack Overflow问题上(例如,Clipboard access using Javascript - sans Flash?),它解释了这种限制是一种有意识的安全措施,可以防止从剪贴板读取密码或其他敏感数据的网站。
虽然从剪贴板中读取似乎很明显是一个巨大的安全风险,但我不清楚为什么写到剪贴板会是这样。通过拒绝JS将数据复制到剪贴板的能力来防止浏览器出现什么情况?
答案 0 :(得分:16)
写入剪贴板是恶意网站(或网站内运行的其他代码,如基于闪存的广告)欺骗用户传播恶意软件的一种方式。这种情况发生在几年前,基于闪存的广告将恶意软件URL复制到剪贴板上,希望用户在打算粘贴其他内容时粘贴它,从而污染Facebook帖子,论坛和电子邮件等内容。你没有链接到蒂莉姨妈猫的照片,而是粘贴一些驱逐恶意软件的链接。通常这些是“你已经感染了病毒,为删除软件支付50美元”假冒防病毒骗局。 我做了一些研究,因为很多我的ClipMate客户都在问为什么这些讨厌的URL突然出现在ClipMate中。在研究时,我遭到了MSNBC和DIGG上基于flash的广告的攻击。剪贴板随后被锁定在Flash 10中。您可以在此处阅读有关我的传奇的更多信息:http://www.clipboardextender.com/defective-apps/clipboard-virus-not-exactly-but-still-dangerous
我希望JavaScript的限制是防止发生类似的事情。
答案 1 :(得分:6)
如果用户不想覆盖他/她的剪贴板怎么办?
答案 2 :(得分:3)
如果用户希望他们的剪贴板包含一件事,但隐蔽地将其替换为另一件事,即使这是一个潜在的安全问题,而不仅仅是烦恼。
虽然这是一个不太可能的攻击媒介,但认为某些涉及社交工程的内容可能是不合理的:说服用户将秘密修改的信息粘贴到目标资源上的密码字段中。然后,该资源将通过攻击者已知的密码进行保护。
答案 3 :(得分:0)
除了上述漏洞问题之外,至少有一种情况是,javascript剪贴板API的不当实现会引起一些安全问题。
现在我们有新的API用于在不调用服务器端的情况下在不同的窗口之间建立连接,例如最近引入Firefox的postMessage,MessageChannel或者说BroadcastChannel。这些API具有不同级别的浏览器支持,但所有这些API都在考虑跨源问题。也就是说,应该不可能从另一台主机上的窗口接收消息,除非该窗口实际上明确允许它。
这不适用于剪贴板API。想象一下,页面上的某些代码会将代码粘贴到剪贴板,而这个剪贴板会被另一个窗口扫描。 这是一些非常奇怪和高度假设的场景,取决于一些非常奇怪和奇特的假设,但值得一提。