防止 XSS 攻击

可以使用 XSS Filter 防止 XSS 攻击,具体细节请访问 http://www.servletsuite.com/servlets/xssflt.htm

使用步骤:

  1. xssflt.jar 放到 WEB-INF/lib
  2. xssflt.jar 添加到 Gradle 依赖

    1
    compile fileTree(dir: 'src/main/webapp/WEB-INF/lib', include: ['*.jar'])
  3. 修改 web.xml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <!-- 防止 XSS 攻击 -->
    <filter>
    <filter-name>XSSFilter</filter-name>
    <filter-class>com.cj.xss.XSSFilter</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>XSSFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>

表单页面

1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html>
<head>
<title>XSS Test</title>
<meta charset="UTF-8">
</head>
<body>
<form class="" action="/a" method="post">
<input type="text" name="name" value="">
<button type="submit" name="button">提交</button>
</form>
</body>
</html>

服务器端

1
2
3
4
5
6
@PostMapping("/a")
@ResponseBody
public String postA(@RequestParam String name) {
System.out.println(name);
return name;
}

测试一

  1. 输入 test
  2. 控制台输出 test
  3. 浏览器端收到 test

测试二

  1. 输入 <test>
  2. 控制台输出 &lt;test&gt;
  3. 浏览器端收到 &lt;test&gt;
  4. 说明防止 XSS 攻击生效