当前位置: 首页 > 知识库问答 >
问题:

CSRFSpring安全

曹骞仕
2023-03-14

我正在构建一个由外部系统进行身份验证的应用程序。对于CSRF处理,我想使用Spring Security的CSRF支持(http://docs.spring.io/spring-security/site/docs/3.2.0.CI-SNAPSHOT/reference/html/csrf.html)

我尝试了各种选项,但在没有身份验证的情况下无法使用Spring Security的CSRF支持。

是否可以仅使用Spring Security的CSRF支持?(我不想使用身份验证/授权)

共有1个答案

澹台玉石
2023-03-14

我也有与您相同的需求,我能够通过在spring security中进行最小配置来实现它。xml

<authentication-manager />
<http create-session="never" use-expressions="true">
    <csrf />
    <http-basic />
</http>

这里是

之后,在您的web上添加Spring Security过滤器。xml文件。这确保所有请求在被应用程序控制器处理之前首先通过Spring Security机制。

<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

然后在JSP(最好是标题JSP)中,包括Spring Security的Taglib,以访问CSRF令牌并将其存储在meta标记中。

<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags"%>

<sec:csrfMetaTags />

<script type="text/javascript">
    var csrfHeader = $("meta[name='_csrf_header']").attr("content");
    var csrfToken = $("meta[name='_csrf']").attr("content");
</script>

之后,在您的所有Ajax调用中包含CSRF令牌。如果不包括,您将获得403-访问拒绝错误。

例如,如果您使用jQuery进行ajax调用,那么您可以对其进行全局配置,以便在请求头中包含CSRF令牌。

$(document).ajaxSend(function(e, xhr, options) {
    xhr.setRequestHeader(csrfHeader, csrfToken);
});

此工作所需的JAR文件是:

    spring-security-acl-5.0.7.RELEASE.jar
    spring-security-config-5.0.7.RELEASE.jar
    spring-security-core-5.0.7.RELEASE.jar
    spring-security-taglibs-5.0.7.RELEASE.jar
    spring-security-web-5.0.7.RELEASE.jar
 类似资料:
  • 安全在Web应用开发中是一项至关重要的话题,Django提供了多种保护手段和机制:

  • Elasticsearch-PHP 客户端支持两种安全设置方式:HTTP 认证和 SSL 加密。 HTTP 认证 如果你的 Elasticsearch 是通过 HTTP 认证来维持安全,你就要为 Elasticsearch-PHP 客户端提供身份凭证(credentials),这样服务端才能认证客户端请求。在实例化客户端时,身份凭证(credentials)需要配置在 host 数组中: $hos

  • 安全 no_file_caps 要求内核无视文件的权限。这样,执行文件的唯一途径就只有:由root去执行或者setuid root noexec={on|off} noexec32={on|off} 是否允许将某部分内存映射为"禁止执行",这是一种防止数据缓冲区溢出攻击的保护措施(也就是WinXP SP2曾经大力宣传的数据执行保护功能),建议保持默认值"on"。 [说明]noexec对32bit代

  • 请参考:http://www.kancloud.cn/manual/thinkphp/1840

  • 评估 Docker 的安全性时,主要考虑三个方面: 由内核的命名空间和控制组机制提供的容器内在安全 Docker 程序(特别是服务端)本身的抗攻击性 内核安全性的加强机制对容器安全性的影响

  • 本节详细介绍了Web容器包含在一个产品中时额外的安全性要求,还包含EJB、JACC和(或)JASPIC。以下各节将介绍这些要求。 EJB™调用传播的安全标识 必须始终提供一个安全标识或主体(principal),用于调用一个企业 bean。从 Web 应用程序中调用企业 Bean 的默认模式是为把 Web 用户的安全标识传播到 EJB 容器。 在其他情况下,Web 容器必须允许不了解 Web 容器