首页 > 其他分享 >CSRF跨站点请求伪造(Cross Site Request Forgery)攻击

CSRF跨站点请求伪造(Cross Site Request Forgery)攻击

时间:2022-09-05 13:44:34浏览次数:66  
标签:浏览器 请求 用户 网站 Request Site Cross token CSRF

CSRF跨站点请求伪造(Cross Site Request Forgery)和XSS攻击一样,有巨大的危害性,就是攻击者盗用了用户的身份,以用户的身份发送恶意请求,但是对服务器来说这个请求是合理的,这样就完成了攻击者的目标。

 

CSRF攻击的过程原理是:

用户打开浏览器,访问目标网站A,输入用户名和密码请求登录

用户信息在通过认证后,网站A产生一个cookie信息返回给浏览器,这个时候用户以可正常发送请求到网站A

用户在没有退出网站A之前在同一个浏览器打开了另一个新网站B。

新网站B收到用户请求之后返回一些攻击代码,并发出一个请求要求访问返回cookie的网站A

浏览器收到这些攻击性代码之后根据新网站B的请求在用户不知道的情况下以用户的权限操作了cookie并向网站A服务器发起了合法的请求。

 

 

预防CSRF攻击主要有以下策略:

使用验证码,在表单中添加一个随机的数字或者字母验证码,强制要求用户和应用进行直接的交互。

HTTP中Referer字段,检查是不是从正确的域名访问过来,它记录了HTTP请求的来源地址。

使用token验证,在HTTP请求头中添加token字段,并且在服务器端建立一个拦截器验证这个token,如果token不对,就拒绝这个请求。

 

 

验证HTTP Referer字段的好处就是实施起来特别简单,普通的网站开发不需要特别担心CSRF漏洞,只需要在最后面设置一个拦截器来验证referer的值就可以了,不需要改变已有的代码逻辑,非常便捷。但是这个方法也不是万无一失的,虽然referer是浏览器提供的,但是不同的浏览器可能在referer的实现上或多或少有自身的漏洞,所以使用referer的安全保证是通过浏览器实现的。使用token验证的方法要比referer更安全一些,需要把token放在一个HTTP自定义的请求头部中,解决了使用get或者post传参的不便性。

标签:浏览器,请求,用户,网站,Request,Site,Cross,token,CSRF
From: https://www.cnblogs.com/yueyiviolet/p/16657813.html

相关文章

  • Linux下用CrossOver安装Source Insight 4
    安装教程1、打开CrossOver。【说明】简单来说CrossOver就是让你在Linux上运行Windows软件的一个工具。2、点击底部的"安装Windows软件"。3、在"选择应用"栏,选择"So......
  • requestIdleCallback和requestAnimationFrame的区别
    页面流畅与FPS页面是一帧一帧绘制出来的,当每秒绘制的帧数(FPS)达到60时,页面是流畅的,小于这个值时,用户会感觉到卡顿。1s60帧,所以每一帧分到的时间是1000/60≈16ms。......
  • requestbody参数不为空检校
    @RequestBody入参字段判空校验,后端@Valid参数校验,内部类参数校验:https://blog.csdn.net/L9009121314/article/details/122296787@NotEmpty,@NotNull和@NotBlank的区别:htt......
  • Request请求转发
    一种在服务器内部资源跳转的方式。当浏览器请求资源a的时候,请求处理了一部分,再跳转到资源b,处理完成后再返回给浏览器在资源a中写下面这行代码  request对象是可以存......
  • Flask 学习-44.Flask-RESTX 请求参数校验reqparse.RequestParser()
    前言Flask-RESTX的整个请求解析器部分将被删除,并将被有关如何与其他可以更好地执行输入/输出内容的包(例如marshmallow)集成的文档所取代。这意味着它将保持到2.0,但认为......
  • Request(请求)&Response(响应)
         ......
  • Postman中的Pre-request Scrip详解
    Postman中的Pre-requestScrip详解一、Pre-requestScrip的简介1、Pre-requestScript是在请求发送之前需要执行的代码片段;2、请求参数中包含随机数或者请求中包括一个......
  • @RequestParam和@PathVariable的用法与区别
    SpringBoot——@PathVariableURL变量Web应用中的URL通常不是一成不变的,例如微博两个不同用户的个人主页对应两个不同的URL:http://weibo.com/user1和http://weibo.com/use......
  • Flask 学习-34.restful-full 请求参数自定义参数校验类型 (reqparse.RequestParser()
    前言在校验请求参数的时候,除了一些基本的required=True,type类型外,还会遇到一些校验,比如是否为空,字符串长度,以及一些自定义的参数规则。add_argument参数下面是add_arg......
  • Flask 学习-33.restful-full 请求参数校验reqparse.RequestParser()
    前言接口请求参数的校验是个大的工作量,参数比较少的时候还可以一个个去判断,参数多了写起来就很麻烦了。reqparse解析请求参数尽管Flask能够简单地访问请求数据(比如......