Spring security的CSRF令牌-我可以使用纯HTML还是需要JSP?

问题描述 投票:0回答:1

您能否告诉我是否有任何方法可以在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经验,因此无法帮助您进行设置。

谢谢。

spring spring-boot security spring-security
1个回答
0
投票

Thymeleaf是您的情况的考虑因素。它的功能之一是可以使用纯HTML进行原型制作,但它仍然是传统的服务器端呈现页面,例如JSP。意味着您可以直接打开html,但是在服务器中部署后仍然具有动态内容。

使用CSRF,Thymeleaf会自动将隐藏输入输入到您的表单中。但是您也可以继续在meta标签中包含CSRF令牌。

现在,如果您要使用带有React,Vue,Angular等SPA的纯HTML / JS,则需要通过Cookies通过Spring Security的CookieCsrfTokenRepositoryhave an REST endpoint来迁移CSRF保护。通过XHR的CSRF。

© www.soinside.com 2019 - 2024. All rights reserved.