确保针对XSS的应用程序

时间:2014-04-10 02:57:55

标签: security xss owasp

我们目前正在使用OWASP Antisamy项目来保护我们的应用程序免受XSS攻击。当任何给定表单提交给服务器时,每个输入字段都被清理。它工作正常,但我们在公司名称,组织名称等字段方面存在问题。

Ex:Ampersand为AT& T转义,公司名称显示错误(显示转义字符)。

我们手动更新数据库中的字段以解决此问题。然而,你可以想象这是一个痛苦的脖子。

有没有办法使用OWASP反讽来解决这个问题,还是应该使用不同的库?

1 个答案:

答案 0 :(得分:6)

您应该只在输出上编码,而不是在输入上编码。如果用户在您的应用程序中输入AT&T,则应将其存储在数据库中的AT&T。不需要对其进行编码,但当然要确保使用参数化查询,这将阻止'等字符突破SQL命令上下文并导致SQL注入。

输出时,这是您需要对字符进行编码的唯一时间。例如输出到HTML时,AT&T应编码为AT&T,因此它会在浏览器中显示为AT&T

看起来您的应用程序正在对输入进行编码并对输出进行编码,因此上面的字符串将被双重编码,然后在HTML中输出为AT&T,从而导致问题。删除输入编码以解决此问题。

您应该仅在输出时编码的原因是,如果您决定要将数据输出为其他格式(如JSON或JavaScript),则编码方式不同。如果JavaScript编码正确,O'leary将成为O\x27leary,但在编码为O'leary的HTML中无法正常显示。