处理安全性并避免使用用户输入的URL进行XSS的最佳方法

我们有一个高度安全的应用程序,我们希望允许用户输入其他用户会看到的URL。


这带来了XSS黑客攻击的高风险-用户可能会输入另一个用户最终执行的javascript。由于我们拥有敏感数据,因此绝不可发生。


处理此问题的最佳做法是什么?仅凭任何一个安全白名单或转义模式就足够了吗?


有关重定向的建议(例如,在链接之前,警告页面上的“此链接超出了我们的站点范围”消息)


是否有理由完全不支持用户输入的链接?


澄清:


基本上,我们的用户要输入:


stackoverflow.com


并将其输出到另一个用户:


<a href="http://stackoverflow.com">stackoverflow.com</a>

我真正担心的是他们在XSS hack中使用此功能。即他们输入:


警报('被黑!');


因此其他用户获得此链接:


<a href="alert('hacked!');">stackoverflow.com</a>

我的示例只是为了解释风险-我很清楚javascript和URL是不同的东西,但是通过让它们输入后者,它们也许能够执行前者。


您会惊奇地发现有多少个站点可以用此技巧攻破-HTML甚至更糟。如果他们知道处理环节上做到他们也知道消毒<iframe>,<img>并巧妙的CSS参考?


我正在一个高度安全的环境中工作-单个XSS hack可能对我们造成非常高的损失。我很高兴我可以制作一个Regex(或使用到目前为止最出色的建议之一)来排除我可能想到的所有内容,但是这足够了吗?


Qyouu
浏览 1278回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP