2011-08-14 41 views
11

似乎目前还没有纯JavaScript方法用于使用大多数现代浏览器访问系统剪贴板,Internet Explorer是一个例外。在许多其他堆栈溢出问题(例如,Clipboard access using Javascript - sans Flash?)中,解释说这个限制是一种有意的安全措施,用于防止网站从剪贴板读取密码或其他敏感数据。为什么写入JS中的剪贴板被认为是安全漏洞?

虽然似乎很明显,阅读从剪贴板将是一个巨大的安全隐患,这是我不明白为什么到剪贴板会。什么情况下,如果有的话,浏览器通过拒绝JS将数据复制到剪贴板的能力来防范?

回答

14

写入剪贴板是恶意网站(或其他在网站内运行的代码(如基于Flash的广告))诱骗用户传播恶意软件的一种方式。几年前,这种情况发生在基于Flash的广告上,该广告将恶意软件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限制是为了防止发生类似的情况。

+2

现在*这个*是一个真正的安全问题。正是我在找的东西。谢谢。 – goodside

+0

很好的答案,谢谢你的信息。 –

+0

他们可以使用Flash,就像Github一样。 – danuker

6

如果用户不希望覆写他或她的剪贴板,该怎么办?

+0

没错。例如,一个用KeePass的用户可能在他的剪贴板中有一个他需要的密码,并且覆盖他想存储的数据会是破坏性的和令人讨厌的,这就是浏览器不希望出现这种行为的原因。 – mopsled

+2

Flash只在点击某物时支持它。如果以相同的方式使用JavaScript实现,我不会看到安全漏洞。这将为这些Flash解决方案节省很多麻烦。 – pimvdb

+2

如果没有更具说服力的话,我会接受这一点,但这似乎是一个微不足道的理由来禁用可能有用的东西。丢失剪贴板在最糟糕的情况下是一种烦恼,因为不会期望它是重要数据的长期存储柜。此外,还有无数其他方式可以让用户受到普遍支持的JS用户的困扰,例如创建弹出式通知。 – goodside

3

如果用户期望他们的剪贴板包含一件东西,但隐藏它已被另一件事取代,即使这是一个潜在的安全问题,而不仅仅是一个烦恼。

尽管不太可能出现攻击媒介,但认为涉及社交工程的梦想可能并非不合理:说服用户将隐蔽更改的信息粘贴到目标资源的密码字段中。然后,该资源将通过攻击者已知的密码进行保护。

0

除了上述漏洞问题,至少有一种情况是javascript剪贴板API的重写实现会引起一些安全问题。

现在我们有了新的API,用于在不调用服务器端的情况下在不同的窗口之间建立连接,如最近引入Firefox的postMessage,MessageChannelBroadcastChannel。这些API具有不同级别的浏览器支持,但他们都在考虑跨源问题。也就是说,除非此窗口明确允许,否则不应从不同主机上的窗口收到消息。

这不适用于剪贴板API。想象一下,页面上的一些代码将代码粘贴到剪贴板,并且该剪贴板被另一个窗口扫描。 这是一些非常奇怪和高度低估的情景,取决于一些相当奇怪和奇特的假设,但值得一提的是它。

相关问题