-
项目使用SpringMVC+Freemarker
- 创建令牌生产类-(CSRFTokenManager)
import java.util.UUID; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; /** * @author huangzy * @version $Revision: 1.0 $, $Date: 2019年10月25日 下午4:30:43 $ */ public class CSRFTokenManager { /** * The token parameter name */ static final String CSRF_PARAM_NAME = "CSRFToken"; /** * The location on the session which stores the token */ public static final String CSRF_TOKEN_FOR_SESSION_ATTR_NAME = CSRFTokenManager.class.getName() + ".tokenval"; public static String getTokenForSession(HttpSession session) { String token = null; synchronized (session) { token = (String) session.getAttribute(CSRF_TOKEN_FOR_SESSION_ATTR_NAME); if (null == token) { token = UUID.randomUUID().toString(); session.setAttribute(CSRF_TOKEN_FOR_SESSION_ATTR_NAME, token); } } return token; } /** * Extracts the token value from the session * * @param request * @return */ public static String getTokenFromRequest(HttpServletRequest request) { return request.getParameter(CSRF_PARAM_NAME); } private CSRFTokenManager() { }; }
- 在baseController中把令牌放入到model中
public class BaseController{ @ModelAttribute public void initBase(HttpServletRequest request, Ht
CSRF防御实例记录
最新推荐文章于 2024-07-31 20:44:37 发布
本文详细记录了使用SpringMVC和Freemarker进行CSRF防御的步骤,包括创建令牌管理类、在BaseController中注入令牌、定义验证注解、在表单中添加隐藏字段、配置拦截器进行验证以及处理Ajax请求的方法。
摘要由CSDN通过智能技术生成