如何避免XSS攻击的应用程序?

时间:2011-04-24 09:53:44

标签: java java-ee

如何保护我们的Web应用程序免受XSS攻击?如果一个应用程序没有对特殊字符进行任何转换,则它很容易受到攻击。

3 个答案:

答案 0 :(得分:12)

在将输出输出回用户之前,您应该将HTML转义为任何输入。一些参考文献:

答案 1 :(得分:2)

HTML转义输入非常有效。 但在某些情况下,业务规则可能要求您不要逃避HTML。 使用REGEX不适合任务,并且很难找到使用它的好解决方案。

我找到的最佳解决方案是使用: http://jsoup.org/cookbook/cleaning-html/whitelist-sanitizer

它使用提供的输入构建一个DOM树,并过滤白名单不能预先允许的任何元素。 API还具有其他用于清理html的功能。

答案 2 :(得分:1)

只需添加到WhiteFang34'列表:

它有几个内置的白名单可供选择,例如允许一些HTML,没有HTML等。

我在Apache Commons的StringEscapeUtils.escapeHtml()上选择了这个,因为它处理撇号的方式。即如果我们的用户输入:

  

艾伦的妈妈有一个很好的布朗尼食谱。

JSoup将单独留下撇号,而Apache Commons将逃脱该字符串:

  艾伦的妈妈有一个很好的布朗尼食谱。

在向用户显示之前,我不想担心失败。