XSS防御篇
上周要求写自己用任何语言写一个留言版,存到数据库中,用自己的办法来解决XSS
我用了JSP+MYSQL,自己写了一个过滤器来防御WEB XSS漏洞
1 package com.mess.filter; 2 3 public class HtmlFilter { 4 public static String filter(String html) { 5 if (html == null) { 6 return null; 7 } 8 StringBuilder sb = new StringBuilder(html.length()); 9 for (int i = 0; i < html.length(); i++) { 10 char c = html.charAt(i); 11 switch (c) { 12 case '>': 13 sb.append(">"); 14 break; 15 case '<': 16 sb.append("<"); 17 break; 18 case '&': 19 sb.append("&"); 20 break; 21 case '"': 22 sb.append("&quit;"); 23 break; 24 case '\'': 25 sb.append("'"); 26 break; 27 default: 28 sb.append(c); 29 break; 30 } 31 } 32 return sb.toString(); 33 } 34 35 36 37 }
String title = HtmlFilter.filter(request.getParameter("title"));
String content = HtmlFilter.filter(request.getParameter("content"));
在加入数据库前编码一下就可以了。虽然XSS形成的多种多样,很难防御。但是这样的话对中小公司基本足够了。
如果觉得不够可以参考使用OWASP ESAPI,不仅仅可以防御XSS,还可以防御SQL等常见WEB漏洞。
【版权所有@Sevck 博客地址http://www.cnblogs.com/sevck】 可以转载,注明出处.