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("&gt;");
14                 break;
15             case '<':
16                 sb.append("&lt;");
17                 break;
18             case '&':
19                 sb.append("&amp;");
20                 break;
21             case '"':
22                 sb.append("&quit;");
23                 break;
24             case '\'':
25                 sb.append("&#039;");
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漏洞。

 

posted @ 2015-12-04 17:19  sevck  阅读(380)  评论(0编辑  收藏  举报