java实现csrf token的生成
时间: 2024-10-25 09:11:49 浏览: 12
基于JSP的Java Web项目的CSRF防御示例
5星 · 资源好评率100%
CSRF (Cross-Site Request Forgery) 保护是一种防止恶意网站通过用户已登录的会话进行未经授权的操作的技术。在Java中,生成CSRF Token通常会在服务器端完成,并在每个需要验证的HTTP请求头或表单字段中附带这个令牌。
1. **生成Token**:
- 客户端(如浏览器)收到服务器响应时,会包含一个随机生成的token,比如一个UUID或者基于时间戳和随机数的字符串。
```java
SecureRandom random = new SecureRandom();
String csrfToken = UUID.randomUUID().toString() // 或者使用Time-Based Token with random salt
```
- 通常存储在Cookie或者HTTP-only的Session属性中。
2. **发送Token**:
- 用户执行操作时(如点击提交按钮),将此token一起发送到服务器。
```java
@GetMapping("/submit")
public String submit(@RequestParam("csrfToken") String receivedToken) {
// 验证receivedToken是否匹配cookie或session中的值
if (!isValidToken(receivedToken)) {
return "Invalid CSRF token";
}
// ...处理业务逻辑
}
```
3. **验证Token**:
- 服务端接收到请求时,检查请求头或POST数据中的token是否与预设的一致。
```java
private boolean isValidToken(String tokenFromRequest) {
String storedToken = getStoredToken(); // 从Cookie或Session获取
return storedToken != null && storedToken.equals(tokenFromRequest);
}
```
阅读全文