上周要求写自己用任何语言写一个留言版,存到数据库中,用自己的办法来解决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漏洞。

 

相关文章:

  • 2021-08-12
  • 2021-08-17
  • 2021-08-17
  • 2021-08-14
  • 2022-12-23
猜你喜欢
  • 2022-01-24
  • 2021-10-06
  • 2021-07-20
  • 2021-12-22
  • 2021-09-23
  • 2021-11-08
  • 2021-08-13
相关资源
相似解决方案