XSS防御篇

上周要求写自己用任何语言写一个留言版,存到数据库中,用自己的办法来解决XSS

我用了JSP+MYSQL,自己写了一个过滤器来防御WEB XSS漏洞

 package com.mess.filter;

 public class HtmlFilter {
public static String filter(String html) {
if (html == null) {
return null;
}
StringBuilder sb = new StringBuilder(html.length());
for (int i = 0; i < html.length(); i++) {
char c = html.charAt(i);
switch (c) {
case '>':
sb.append("&gt;");
break;
case '<':
sb.append("&lt;");
break;
case '&':
sb.append("&amp;");
break;
case '"':
sb.append("&quit;");
break;
case '\'':
sb.append("'");
break;
default:
sb.append(c);
break;
}
}
return sb.toString();
} }

String title = HtmlFilter.filter(request.getParameter("title"));
String content = HtmlFilter.filter(request.getParameter("content"));

在加入数据库前编码一下就可以了。虽然XSS形成的多种多样,很难防御。但是这样的话对中小公司基本足够了。

如果觉得不够可以参考使用OWASP ESAPI,不仅仅可以防御XSS,还可以防御SQL等常见WEB漏洞。

上一篇:[XSS防御]HttpOnly之四两拨千斤


下一篇:2-Eighteenth Scrum Meeting-20151218