我们有一个高度安全的应用程序,我们希望允许用户输入其他用户可以看到的 URL。
这引入了 XSS 黑客攻击的高风险 - 用户可能会输入另一个用户最终执行的 javascript。由于我们持有敏感数据,因此永远不会发生这种情况至关重要。
处理此问题的最佳做法是什么?任何安全白名单或逃逸模式是否足够好?
关于处理重定向的任何建议(例如,在跟随链接之前的警告页面上的“此链接超出我们的站点”消息)
是否存在根本不支持用户输入链接的论点?
澄清:
基本上我们的用户想要输入:
stackoverflow.com
并将其输出给另一个用户:
<a href="http://stackoverflow.com">stackoverflow.com</a>
我真正担心的是他们在 XSS 黑客中使用它。即他们输入:
alert('被黑了!');
所以其他用户得到这个链接:
<a href="javascript:alert('hacked!');">stackoverflow.com</a>
我的例子只是为了解释风险——我很清楚 javascript 和 URL 是不同的东西,但是通过让他们输入后者,他们可能能够执行前者。
你会惊讶于这个技巧可以破坏多少个网站——HTML 更糟糕。如果他们知道处理链接,他们是否也知道清理<iframe>
和<img>
巧妙的 CSS 引用?
我在一个高度安全的环境中工作——一次 XSS 黑客攻击可能会给我们带来非常高的损失。我很高兴我可以生成一个正则表达式(或使用迄今为止最好的建议之一),它可以排除我能想到的所有内容,但这是否足够?