首页 > 其他分享 >CSRF(跨站请求伪造)原理:

CSRF(跨站请求伪造)原理:

时间:2024-05-11 11:41:52浏览次数:21  
标签:跨站 请求 网站 用户 Cookie CSRF 伪造

CSRF(跨站请求伪造)原理:

CSRF是一种网络攻击方式,攻击者利用用户已登录的信任网站A的凭证(通常是Cookie),在用户不知情的情况下,诱使用户的浏览器向另一个网站B发送恶意请求。这种攻击之所以奏效,是因为浏览器会自动携带用户在A网站的认证信息(如Session Cookie)去访问B网站,而B网站会误以为该请求是用户自己发出的,从而执行攻击者期望的操作,如转账、修改密码等。

CSRF攻击的基本步骤如下:

  1. 用户正常登录受信任的网站A,并在本地生成Cookie。
  2. 在用户没有登出A网站或Cookie没有过期的情况下,用户访问了攻击者控制的恶意网站B。
  3. 网站B通过图片标签、隐藏表单、AJAX请求等手段,构造一个对网站A的请求,这个请求会携带A网站的有效Cookie。
  4. 浏览器在用户不知情的情况下,发送了这个请求到网站A,执行了攻击者预设的操作,如转账、修改密码等。

CSRF的解决方案:

为了防范CSRF攻击,可以采取以下几种策略:

  1. Token验证:在敏感操作的表单中加入一个随机生成的、不可预测的Token,并在服务器端验证此Token。Token通常存储在服务器的session中,并在每次请求时生成一个新的Token,确保每次请求的唯一性。

  2. SameSite Cookie属性:设置Cookie的SameSite属性为"Lax"或"Strict",可以有效防止跨站请求携带Cookie。特别是SameSite="Strict"可以完全阻止跨站发送Cookie,而"Lax"允许一些导航类型的跨站请求携带Cookie。

  3. Referer检查:检查HTTP请求头中的Referer字段,确保请求是从预期的域名发起的。但这种方法并不总是可靠,因为Referer字段可以被伪造或缺失。

  4. ** CORS策略**:使用CORS(跨源资源共享)策略,通过设置Access-Control-Allow-Origin头部来限制哪些源可以访问资源,但需要注意的是,CORS主要针对跨域的API请求,对于同源的CSRF攻击不起作用。

  5. Double Submit Cookie:在页面中嵌入一个隐藏的表单字段,其值与用户 session 中的某个关键 Cookie 值相同。当表单提交时,同时验证表单中的这个字段值与Cookie值是否一致。

  6. User Interaction Requirement:要求敏感操作必须有用户交互,比如点击确认按钮,而不是仅靠页面加载或自动提交表单。

结合多种策略可以更有效地防范CSRF攻击,提高网站的安全性。

标签:跨站,请求,网站,用户,Cookie,CSRF,伪造
From: https://www.cnblogs.com/zsnhweb/p/18186216

相关文章

  • CSRF(Pikachu靶场练习)
    CSRF(get)自己随便输点东西,回显登录失败,查看源码没发现什么点开提示,登录进去看看看到可以修改个人信息,我们把居住改成China,修改成功,没发现urlhttp://127.0.0.1/pikachu/vul/csrf/csrfget/csrf_get_edit.php有变化这次我们在submit时抓包看看/pikachu/vul/csrf/csrfget/cs......
  • 5.7前端跨域CSRF和SSRF
    一、CSRF(跨站请求伪造)1、get类型(pikaqu靶场环境)前提:抓包获取请求地址,构造伪造请求站点,并保持用户登录状态点击伪造站点此时在其他主机,构造网站信息index.html文件,并伪造修改个人信息数据包;<scriptsrc='http://192.168.127.129:81/vul/csrf/csrfget/csrf_get_edit.php?sex=......
  • 详解csrf(跨站请求伪造)
    1.什么是csrf(csrf攻击原理)?用户正常访问A网站,A网站设置cookie被用户浏览器保存用户不关闭浏览器,直接访问恶意网站,该恶意网站内隐藏式内嵌了A网站接口的请求链接触发该请求链接,自动携带浏览器保存的cookie,请求成功。2.涉及的基础知识我们先梳理下上面所涉及的一些......
  • csrf-基于Pikachu的学习
    CSRF-跨站请求伪造CSRF的原理CSRF攻击即Cross-siterequestforgery,跨站请求伪造,直白来说就是恶意网站伪装成用户,向被害网站发起操作请求。用户输入账号信息请求登录A网站。A网站验证用户信息,通过验证后返回给用户一个cookie在未退出网站A之前,在同一浏览器中请求了黑客构造......
  • XSS与CSRF
    1.XSSXSS,跨站脚本攻击,允许攻击者将恶意代码植入到提供给其它用户使用的页面中XSS预防1.过滤在用户输入的过程中,过滤掉用户输入的恶劣代码,然后提交给后端,但是如果攻击者绕开前端请求,直接构造请求就不能预防了2.不用执行恶意代码在使用 .innerHTML、.outerHTML、document.wri......
  • flask session 伪造 伪随机数题
    今天见了一个没做过的flask伪造题目,先看题[CISCN2019华东南]Web4点击发现参数?url=XXX可以利用,尝试下file协议。被过滤了,可能是匹配,尝试绕过下。看看环境变量发现/app看下/app/app.py明显的session伪造,但是secrect_key生成却是伪随机数式的。这里先解释下random.seed(u......
  • java代码审计跨站脚本(XSS)--反射型
    一、基础:跨站脚本(Xss)一、原理:恶意攻击者往web页面里插入恶意js代码,而在服务端没有对数据进行严格的过滤。当用户浏览页面时,js代码必须在该html页面中(hrml必须要存在这个而已艾玛),从而达到攻击用户的目的。(攻击者构造的的js代码会被当作正常的HTML、JS代码被解析,执行Js脚本实现攻......
  • 在Linux中,如何检测和防止SQL注入和跨站脚本(XSS)攻击?
    在Linux环境中运行的Web服务器和应用程序可能面临SQL注入和跨站脚本(XSS)攻击的风险。以下是在Linux中检测和防止这两种常见攻击的方法:1.SQL注入攻击的检测与防止:1.检测:审计日志分析:通过分析数据库和Web服务器日志,查找异常的SQL查询模式或错误消息,这些可能是SQL注入攻击的......
  • 【24.0】Django框架之csrf跨站请求
    【一】跨站请求伪造介绍【1】引入CSRF(Cross-SiteRequestForgery)跨站请求伪造是一种常见的网络攻击方式。攻击者通过诱导受害者访问恶意网站或点击恶意链接将恶意请求发送到目标网站上利用受害者在目标网站中已登录的身份来执行某些操作从而达到攻击的目的。【2】举......
  • 关于CSRF跨站请求伪造的理解(只写了一点点,未写完)
    之前做一道题时遇到了这样一句CSRF(Cross—SiteRequestForgery)跨站请求伪造的预防措施:1、使用token2、加验证码3、http请求头设置referer字段有点不太理解什么时候请求头设置了referer字段发现是这种浏览器开发者页面看到的请求头里的ReferrerPolicy。这个的含义,用AI生成......