首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么不能在气泡提示中防止超链接

蝎子

气泡提示,非常适用于需要发送桌面通知的场景,对于提升应用程序的使用的体验十分有帮助,但是系统提供的气泡提示控件,不允许开发者放置超链接到提示文本中 ,为什么呢?请听我给你翻译翻译。

短答案

因为Win32 SDK中,根本就没有一个所谓的”NIF_PARSELINKS”标志位。

长答案

当气泡提示功能首次被开发时,根本就没有实现嵌入超链接的功能。因而,应用开发者可以随意地在气泡提示文本中放入不安全的内容,因为控件压根就不会执行它们,它们在某种意义上看来,是”死的”。所以,举个例子,一个杀毒软件扫描器在扫描了一个文件并确认此文件安全时,会弹出一个气泡提示:文件XXX已完成扫描,安全。

现在,我们假设,系统允许开发者在气泡提示中放入超链接。恶意代码开发者可能会编写如下的网页代码:

然后,将上面的代码保存为一个名为”重要资料.html”的文件,并作为邮件附件发送给用户。

用户收到了邮件并保存了附件,用户十分小心,在打开附件之前使用了杀毒软件对附件进行了扫描。杀毒软件执行扫描,并未发现任何威胁,就给出了一个气泡提示:

文件”重要资料.html”已完成扫描,安全。

注意,上面提示中的重要资料.html是一个超链接。

用户可能会觉得:哇,真是方便啊,我可以直接点击这个超链接来打开文档。

然后悲剧发生了,超链接里的恶意代码被触发,导致用户的磁盘被格式化。

有开发者可能会问了:”你们可以加上一个NIF_PARSELINKS标志嘛,这样那些希望在他们的气泡提示中嵌入链接的开发者就可以使用这个功能,同时,对于不希望使用这一功能的程序来说,也保持了向后兼容”

(我实际上听说有人尝试将TTF_PARSELINKS作为一个标志位传入到NOTIFYICONDATA.uFlags成员,并问我为什么代码没有正常工作。我希望看了上面的解释,大家都能理解为什么这根本没有可能正常工作。)

让我们假设有这么一个标志可用。

这会允许开发者传入一块可能是不安全的数据块。如果开发者使用这个标志,则必须十分小心,确保没有将不安全的链接放置在他们的气泡提示中。

有人可能说:哇哦,太棒了,又有一个新的标志位可以试试了。

然后在使用这个标志的时候,根本没有考虑它可能存在的安全风险。可能恶意代码开发者会欺骗应用程序,将一段不安全的代码放置在气泡提示中,然后利用此漏洞发动攻击。

有人会说了:”别闹了,应该没有开发者愚蠢到写代码不考虑潜在的安全风险吧?”

我希望你是在开玩笑啊。

所以,最好的一个确保安全的方法是:操作系统根本就不允许嵌入在应用程序代码中的恶意代码执行。

总结

在现代桌面应用中,我们还是会看到气泡提示中实现了超链接,我希望:开发者要小心一些,不要故意或者无意地放入不安全的内容到超链接里。

最后

Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。

本文来自:《Why can’t I put hotlinks in notification icon balloon tips?》

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201220A037KU00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券