在不可信文本中安全地呈现超链接

5
作为一个项目的一部分,我通过Web表单接受用户提供的文本,并在Web页面上显示它。他们提供的文本可能包含URL,如果是这样,我想将其呈现为超链接以改善体验。例如,用户可能提交包含http://www.google.com的文本,我希望将其转换为<a href="http://www.google.com">... 我想知道在执行此操作时应该注意哪些安全问题。我已经采取措施避免任何简单的XSS插入,因为我的XML库将转义任何特殊字符,但我想象还有更复杂的攻击。

你可能面临的最大问题之一是这个:(链接已省略)编辑:糟糕,我刚意识到你不会混淆 href。请忽略这个 ;) - vzwick
2个回答

1
除了忽略 javascript:,你应该只为 http: 协议创建超链接,因为有一些应用程序可以通过其他协议启动或控制。例如 Steam、Skype 和 AOL Messenger。

1
数据:文本/ HTML; base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4 = - Pierre Ernst

0
如果你只是用a元素包含URL,唯一的问题就是如果他们输入了一个恶意的URL(可能被缩短了),并且你最终点击了它,前提是你的软件所有其他攻击手段都是安全的(例如不能任意执行JavaScript等)。
确保在匹配URL时不考虑javascript:伪协议。这样做不会带来任何好处。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接