如何保护我们的Web应用程序免受XSS攻击?如果一个应用程序没有对特殊字符进行任何转换,则它很容易受到攻击。
答案 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将逃脱该字符串:
艾伦的妈妈有一个很好的布朗尼食谱。
在向用户显示之前,我不想担心失败。