您能否告诉我是否有任何方法可以在pure HTML(不是JSP)内部使用Spring Security的CSRF令牌?我的旧应用程序使用JSP,并轻松接收spring security的CSRF令牌:
<%-- index.jsp: --%>
<form method="post"...>
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
...
Or:
<head>
<meta name="_csrf" content="${_csrf.token}"/>
<meta name="_csrf_header" content="${_csrf.headerName}"/>
...
现在我工作的公司希望转为无模板的纯HTML:
<!-- index.html: -->
<html>
...
Pure <form> and javascript, but how can we receive CSRF here?
[我们公司是老手,新手,只是告诉我们JSP已经过时了,现代团队应该使用干净的“ .html”页面,前端团队可以在不运行服务器的情况下进行测试。我们愿意尝试,但该顾问缺乏CSRF经验,因此无法帮助您进行设置。
谢谢。
Thymeleaf是您的情况的考虑因素。它的功能之一是可以使用纯HTML进行原型制作,但它仍然是传统的服务器端呈现页面,例如JSP。意味着您可以直接打开html,但是在服务器中部署后仍然具有动态内容。
使用CSRF,Thymeleaf会自动将隐藏输入输入到您的表单中。但是您也可以继续在meta标签中包含CSRF令牌。
现在,如果您要使用带有React,Vue,Angular等SPA的纯HTML / JS,则需要通过Cookies通过Spring Security的CookieCsrfTokenRepository或have an REST endpoint来迁移CSRF保护。通过XHR的CSRF。