java CSRFToken csrf的设置 示例代码
时间: 2024-04-14 13:27:42 浏览: 171
下面是一个使用 Java 设置和生成 CSRF Token 的示例代码:
```java
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.UUID;
public class CSRFTokenUtil {
public static final String CSRF_TOKEN_HEADER = "X-CSRF-Token";
public static final String CSRF_TOKEN_SESSION_ATTR = "csrfToken";
public static String generateCSRFToken() {
return UUID.randomUUID().toString();
}
public static void setCSRFToken(HttpServletRequest request) {
HttpSession session = request.getSession(true);
String csrfToken = generateCSRFToken();
session.setAttribute(CSRF_TOKEN_SESSION_ATTR, csrfToken);
}
public static boolean isValidCSRFToken(HttpServletRequest request) {
HttpSession session = request.getSession(false);
String csrfToken = request.getHeader(CSRF_TOKEN_HEADER);
if (session != null && csrfToken != null) {
String storedToken = (String) session.getAttribute(CSRF_TOKEN_SESSION_ATTR);
if (storedToken != null && storedToken.equals(csrfToken)) {
return true;
}
}
return false;
}
public static void handleCSRFViolation(HttpServletResponse response) throws IOException {
response.sendError(HttpServletResponse.SC_FORBIDDEN, "Invalid CSRF Token");
}
}
```
在上述示例中,`CSRFTokenUtil` 类提供了生成、设置、验证和处理 CSRF Token 的方法。
- `generateCSRFToken` 方法用于生成随机的 CSRF Token。
- `setCSRFToken` 方法将生成的 CSRF Token 存储在会话中。
- `isValidCSRFToken` 方法用于验证请求中的 CSRF Token 是否与会话中存储的一致。
- `handleCSRFViolation` 方法用于处理 CSRF Token 验证失败的情况。
在你的代码中,你可以按照以下方式使用 `CSRFTokenUtil`:
生成并设置 CSRF Token:
```java
CSRFTokenUtil.setCSRFToken(request);
```
验证请求中的 CSRF Token:
```java
if (CSRFTokenUtil.isValidCSRFToken(request)) {
// CSRF Token 验证通过
// 执行你的逻辑
} else {
// CSRF Token 验证失败
CSRFTokenUtil.handleCSRFViolation(response);
}
```
这样,你就可以在 Java 中使用 `CSRFTokenUtil` 类来设置和验证 CSRF Token,并根据需要处理验证失败的情况。
阅读全文