EscapeHtmlReference的escape方法调用以下方法实现:
StringEscapeUtils.escapeHtml(param);  再调用
org.apache.commons.lang.Entities.HTML40.escape(writer, string);
代码如下:
public void escape(Writer writer, String str) throws IOException {
int len = str.length();

for(int i = 0; i < len; ++i) {
char c = str.charAt(i);
String entityName = this.entityName(c);
if(entityName == null) {
if(c > 127) {
writer.write("&#");
writer.write(Integer.toString(c, 10));
writer.write(59); //就是个分号
} else {
writer.write(c);
}
} else {
writer.write(38);
writer.write(entityName);
writer.write(59);
}
}

}

我们也可以自己调用
StringEscapeUtils.escapeHtml(param);
比如:
String param = request.getParameter("p");
String x = StringEscapeUtils.escapeHtml(param);
System.out.println(x);

输入 <script>alert(/xxx/)</script> 输出 &lt;script&gt;alert(/xxx/)&lt;/script&gt;


velocity 也可以自定义 EventHandler 处理xss,配置EscapeHtmlReference 替换成自己的EventHandler
<bean >/^(?!\$\!?unesc_).*/</prop>
</props>
</property>
</bean>


相关文章:

  • 2022-12-23
  • 2021-05-31
  • 2022-12-23
  • 2021-08-11
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-12
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-03-01
  • 2022-03-10
  • 2022-02-02
  • 2022-12-23
相关资源
相似解决方案