【发布时间】:2011-04-24 09:53:44
【问题描述】:
如何保护我们的 Web 应用程序免受 XSS 攻击?一个应用程序很容易受到攻击,如果它不做任何特殊字符的转换。
【问题讨论】:
-
如何在不同情况下防止XSS攻击的好帖子发在那里:stackoverflow.com/questions/19824338/…
标签: java jakarta-ee
如何保护我们的 Web 应用程序免受 XSS 攻击?一个应用程序很容易受到攻击,如果它不做任何特殊字符的转换。
【问题讨论】:
标签: java jakarta-ee
在将输入返回给用户之前,您应该对任何输入进行 HTML 转义。一些参考资料:
【讨论】:
HTML 转义输入效果很好。 但在某些情况下,业务规则可能会要求您不要转义 HTML。 使用 REGEX 不适合这项任务,而且很难用它想出一个好的解决方案。
我发现的最佳解决方案是使用: http://jsoup.org/cookbook/cleaning-html/whitelist-sanitizer
它使用提供的输入构建一个 DOM 树,并过滤白名单之前不允许的任何元素。 API还有其他清理html的功能。
【讨论】:
只是添加到 WhiteFang34' 列表中:
它有几个内置的白名单可供选择,例如允许一些HTML,不允许HTML等。
我之所以选择它而不是 Apache Commons 的 StringEscapeUtils.escapeHtml(),是因为它处理撇号的方式。 IE。如果我们的用户输入:
艾伦的妈妈有一个很好的布朗尼食谱。
JSoup 会单独留下撇号,而 Apache Commons 会将该字符串转义为:
艾伦的妈妈有一个很好的布朗尼食谱。
在向用户显示之前我不想担心取消转义。
【讨论】: