CSRF(跨站请求伪造)攻击及防御策略

news/2024/11/24 4:12:58/

CSRF(Cross-site request forgery)跨站请求伪造,也被称为"One Click Attack"(一键攻击)或者"Session Riding"(会话控制),是一种对网站的恶意利用。与传统的XSS攻击(跨站脚本攻击)相比,CSRF攻击更加难以防范,被认为更具危险性。CSRF攻击可以在用户不知情的情况下,以用户的名义伪造请求发送给攻击页面,从而在用户未授权的情况下执行受到权限保护的操作。

场景讲解

例如,一个用户Andy登录银行站点服务器准备进行转账操作。在Andy的用户信息有效期内,Andy被诱导查看了一个黑客恶意网站。该网站获取了Andy登录后的浏览器与银行网站之间尚未过期的Session信息。由于Andy浏览器的cookie中含有Andy银行账户的认证信息,黑客可以以Andy的合法身份伪装访问Andy的银行账户,并进行非法操作。

CSRF攻击的防御策略

  1. 验证HTTP Referer字段:验证请求来源页面的Referer字段,确保请求来自同一站点,但该方法并不可靠,因为Referer字段可能被伪造或者被浏览器禁用。

  2. 在请求地址中添加Token并验证:在每个页面中嵌入一个随机生成的Token,并将其添加到请求地址的参数中,后端服务器在接收到请求时验证Token的有效性。

  3. 在HTTP头中自定义属性并验证:在每个请求中添加自定义的HTTP头属性,例如"X-Requested-With"或"X-CSRF-Token",后端服务器在接收到请求时验证该属性的值。

以Spring Security安全框架中的CSRF防御功能来讲解:

  • disable(): 关闭Spring Security默认开启的CSRF防御功能。
  • csrfTokenRepository(CsrfTokenRepository csrfTokenRepository): 指定要使用的CsrfTokenRepository(Token令牌持久化仓库)。默认是由LazyCsrfTokenRepository包装的HttpSessionCsrfTokenRepository。
  • requireCsrfProtectionMatcher(RequestMatcher requireCsrfProtectionMatcher): 指定针对什么类型的请求应用CSRF防护功能。默认设置是忽略GET、HEAD、TRACE和OPTIONS请求,而处理并防御其他所有请求。
  1. CSRF防护功能关闭的配置,但直接关闭CSRF防御的方式简单粗暴,不太推荐使用,如果强行关闭后网站可能会面临CSRF攻击的危险,适合在开发过程中测试使用。
@Override
protected void configure(HttpSecurity http

)
 throws Exception 
{
    http
        .csrf()
            .disable()
        // ...其他配置
}

Spring Boot整合Spring Security进行CSRF防御的示例

  1. 针对Form表单数据修改请求的CSRF Token配置: 在表单中添加携带CSRF Token信息的隐藏域:
<form method="post">
    <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />
    <!-- 其他表单字段 -->
    <input type="submit" value="Submit" />
</form>
  1. 针对Ajax数据修改请求的CSRF Token配置:

在页面的<head>标签中添加<meta>标签设置CSRF Token信息,并在具体的Ajax请求中获取相应的Token值,并将其添加到请求的HTTP header中进行验证。

<head>
    <meta name="_csrf" th:content="${_csrf.token}"/>
    <meta name="_csrf_header" th:content="${_csrf.headerName}"/>
    <!-- 其他头信息 -->
</head>
<body>
    <!-- 具体页面内容 -->
    <script type="text/javascript">
        $(document).ajaxSend(function(e, xhr, options{
            xhr.setRequestHeader($("meta[name='_csrf_header']").attr("content"), $("meta[name='_csrf']").attr("content"));
        });
        // 其他Ajax请求
    
</script>
</body>

希望通过以上的讲解,能让大家更深入的了解CSRF(跨站请求伪造)攻击及防御策略。

本文由 mdnice 多平台发布


http://www.ppmy.cn/news/283068.html

相关文章

27U、42U、47U常见机柜设备布局图详解【转载自微信公众号弱电课堂】

机柜是机房布线中必不可少的设备&#xff0c;几乎弱电人都有接触 &#xff0c;也一直有朋友问到关于机柜的品牌与安装细节&#xff0c;尤其是关于机柜内部的设备布置。 本期我们将通过常见的布局实例&#xff0c;和大家一起来详细了解下关于机柜的内部的布局。 一、常用型号机…

邯郸图腾服务器机柜系列,图腾机柜G系列产品

性能特点 标准: 符合ANSI/EIA RS-310-D、IEC297-2、DIN41494&#xff1b;PART1、DIN41494;PART7、GB/T3047.2-92&#xff1b;兼容ETSI标准。 特点: 单开白色钢化玻璃前门&#xff1b; 单开钣金后门&#xff1b; 前后门免焊加强筋结构&#xff0c;美观牢固&#xff1b; 前后门配…

图腾标准服务器机柜型号,图腾常用的机柜型号及全参数

实用标准文案 AD网络服务器机柜 带弹力锁的弧形高密度六角网孔前门(专利)高密度六角网孔后门&#xff0c;通风率达71.2% 产品主要规格及性能 标准: 符合ANSI/EIA RS-310-D、IEC297-2、DIN41491; PART1、DIN41494; PART7、GB/T3047.2- 92标准;兼容ETSI标准. 特点: •弧形高密度六…

云南b系列服务器机柜,图腾A3系列服务器机柜规格表

图腾A3系列服务器机柜规格尺寸 系列服务器机柜规格表 图腾 A3 系列服务器机柜规格表 订购代码 No. Model 容量 Capacity(U) 宽 Width (mm) 深 Depth (mm) 高 Height (mm) A3.6617.■■■ A3.6717.■■■ A3.6817.■■■ A3.6917.■■■ A3.6017.■■■ A3.6117.■■■ A3.6217.…

he系列高端服务器机柜,图腾A36042高端服务器机柜

[导读]图腾网络服务器机柜图腾 A36042是目前一款非常流行的服务器机柜&#xff0c;设计非常独特&#xff0c;并且外观典雅&#xff0c;工艺精湛&#xff0c;而且其通风效果非常不错&#xff0c;能够给服务器提供一个舒适的运行环境&#xff0c;而且其质量轻便&#xff0c;容易搬…

42u的机柜供服务器安装位置,一个42U标准服务器机柜能放多少台服务器

原标题&#xff1a;一个42U标准服务器机柜能放多少台服务器 机柜有很多种&#xff0c;有网络机柜、服务器机柜、控制台机柜。其中有一些机柜是非常标准的&#xff0c;就好比42U标准机柜。那么42U标准机柜的尺寸是多少呢&#xff1f; 42U标准服务器机柜尺寸简介 在了解42U标准服…

阿里云云盒42U机柜交付本地数据中心

云盒是实物机柜&#xff0c;用户购买后阿里云将机柜运送到用户的数据中心中&#xff0c;云盒相当于把阿里云可用区带回用户身边&#xff0c;阿里云百科来详细说下什么是云盒&#xff1f;云盒的优势、云盒使用场景及云盒产品详细说明&#xff1a; 什么是云盒&#xff1f; 什么…

服务器机柜组件是,机柜及组件系统参数

机柜的标准物理尺寸为482.6nun(lgin.)。其它如EIA310(美国电子工业协会)等标准进一步确立了机架式安装的电信和IT设备的标准。尽管建立了这些标准&#xff0c;但是计算机工业的不断进步及其与电信行业的不断融合却带来了新的问题&#xff0c;即这些标准明显滞后。那么下面就和图…