Tag: html sanitizing

通过用户input的URL来处理安全性和避免XSS的最佳方式

我们有一个高安全性的应用程序,我们希望允许用户input其他用户将会看到的URL。 这引入了XSS黑客的高风险 – 一个用户可能会inputJavaScript,另一个用户最终执行。 由于我们持有敏感数据,所以这绝对不会发生。 处理这个问题的最佳做法是什么? 任何安全白名单或逃生模式单独足够好? 有关处理redirect的任何build议(例如,在链接之前的警告页面上的“此链接超出我们的网站”消息) 有没有支持用户input链接的论据? 澄清: 基本上我们的用户想要input: stackoverflow.com 并将其输出给另一个用户: <a href="http://stackoverflow.com">stackoverflow.com</a> 我真正担心的是他们在XSS黑客中使用这个。 即他们input: 警报( '砍死!'); 所以其他用户得到这个链接: <a href="alert('hacked!');">stackoverflow.com</a> 我的例子只是解释风险 – 我很清楚,JavaScript和URL是不同的东西,但通过让他们input后者,他们可能能够执行前者。 你会惊讶有多less网站可以打破这个伎俩 – HTML是更糟糕的。 如果他们知道处理链接,他们也知道清理<iframe> , <img>和聪明的CSS引用? 我正在一个高度安全的环境中工作 – 单一的XSS攻击可能会给我们带来非常高的损失。 我很高兴能够制作一个正则expression式(或者使用迄今为止的一个很​​好的build议),这样可以排除我所能想到的所有事情,但是这样做还可以吗?

在客户端清理/重写HTML

我需要显示通过跨域请求加载的外部资源,并确保只显示“ 安全 ”的内容。 可以使用Prototype的String#stripScripts来删除脚本块。 但是像onclick或者onerror这样的处理程序依然存在。 至less有什么图书馆? 剥离脚本块, 杀死DOM处理程序, 删除黑名单标签(例如: embed或object )。 那么是否有任何JavaScript相关的链接和例子呢?