SpringMVC设置XSS攻击


原文链接地址:SpringMVC设置XSS攻击

XSS攻击防御主要是针对用户输入项的HTML标签进行处理。例如:【>】修改成【&gt】; 【<】修改成【&】等

SpringMVC中处理的主要逻辑是,在Spring绑定入参的时候,针对参数进行处理。通过Spring提供的@InitBinder进行处理。

这个方法可以写在一个公共的BaseController中,其他Controller需要继承BaseController。

代码示例如下:

 

 1 @Controller
 2 
 3 public class BaseController {
 4 
 5 @InitBinder
 6 
 7 public void initBinder(ServletRequestDataBinder binder) {
 8 
 9 /**
10 
11  * 自动转换日期类型的字段格式
12 
13  */
14 
15 binder.registerCustomEditor(Date.class, new CustomDateEditor(
16 
17 new SimpleDateFormat("yyyy-MM-dd"), true));
18 
19 /**
20 
21  * 防止XSS攻击
22 
23  */
24 
25 binder.registerCustomEditor(String.class, new StringEscapeEditor(true, false));
26 
27 }
28 
29 }

 

在StringEscapeEditor中,针对String类型的参数,进行特殊符号的替换

 1 public class StringEscapeEditor extends PropertyEditorSupport {
 2 
 3  
 4 
 5 private boolean escapeHTML;// 编码HTML
 6 
 7  
 8 
 9 private boolean escapeJavaScript;// 编码javascript
10 
11  
12 
13 public StringEscapeEditor() {
14 
15 super();
16 
17 }
18 
19  
20 
21 public StringEscapeEditor(boolean escapeHTML, boolean escapeJavaScript) {
22 
23 super();
24 
25 this.escapeHTML = escapeHTML;
26 
27 this.escapeJavaScript = escapeJavaScript;
28 
29 }
30 
31  
32 
33 @Override
34 
35 public String getAsText() {
36 
37  
38 
39 Object value = getValue();
40 
41 return value != null ? value.toString() : "";
42 
43 }
44 
45  
46 
47 @Override
48 
49 public void setAsText(String text) throws IllegalArgumentException {
50 
51  
52 
53 if (text == null) {
54 
55 setValue(null);
56 
57 } else {
58 
59 String value = text;
60 
61 if (escapeHTML) {
62 
63 value = HtmlUtils.htmlEscape(value);
64 
65 }
66 
67 if (escapeJavaScript) {
68 
69 value = JavaScriptUtils.javaScriptEscape(value);
70 
71 }
72 
73 setValue(value);
74 
75 }
76 
77 }
78 
79  
80 
81 }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM