CSRF原理详解

一、CSRF原理过程

CSRF(Cross-site request forgery)跨站请求伪造,是一种网络攻击方式,攻击者利用受害者已登录的身份,在不知情的情况下发送恶意请求,以执行未经授权的操作。攻击过程如下:

一、受害者登录网站A,A将用户登录信息保存在Cookie中.
二、受害者未退出网站A,进入恶意攻击者的网站B.
三、网站B向网站A发起请求,此时请求中包含了受害者在网站A中的Cookie和误导受害者执行的恶意代码.
四、网站A收到请求,由于含有合法身份验证Cookie,且服务器端没有做CSRF防御措施,便执行了攻击者的恶意代码.
五、攻击完成,受害者无感知.

二、CSRF原理验证

常见的CSRF防御措施是在向服务器提交请求时,提交一个随机生成的token,使得请求在服务器端通过校验后才会被执行。token的获取可以通过生成的方式避免重复,具体流程如下:

一、服务器生成一个 token,存储到数据库之类的高安全数据存储介质中,如果是多台服务器负载均衡,还要保证所有服务器拥有同一个 token.
二、服务器将这个token写入到表单的隐藏字段或cookie中.
三、用户接收到响应的页面,之后如果点击了一个提交请求,token值将随用户提交的数据一起发送到服务器.
四、服务器收到用户提交的数据和 token,然后比较两者的值是否相等,相等就说明这个请求是合法的.

三、XSS和CSRF攻击原理

与XSS(Cross-site scripting)跨站脚本攻击不同,XSS攻击时攻击者在web页面中注入恶意脚本,执行非法指令;而CSRF攻击通过获取到用户的身份信息,进而执行web页面的非法指令,我们可以对比这两种攻击方式的原理体会到他们的不同。

四、CSRF原理及利用方式

可以使用以下方式进行CSRF攻击:

  1. 通过图片URL发起攻击:img标签是可以直接把图片以URL形式展示,当用户访问这个恶意URL时就触发了攻击.
  2. 利用iframe发起攻击:攻击者在博客里添加了一个iframe标签,在里面填上类似csrf.html,在填上了一个Form表单,通过隐藏表单来设置攻击指令.
  3. 利用提交表单进行攻击:一个前端程序使用get和post请求,反馈一个转移指令给后台,攻击者会不断提交表单,执行恶意请求.

五、简述CSRF的攻击原理

要实现CSRF攻击,攻击者必须要让受害者登录了网站A并且在获取了受害者的Cookie后才能执行。攻击者可以通过发送恶意邮件,冒充可靠来源,引诱受害者点击恶意链接,来获取到受害者的Cookie。可能最常见的是图像方式,攻击者创建了一个img标签,其中设置了类似“img src=”http://www.a.com/account.asp?action=delete”的一些操作。只要受害者在浏览器里加载任何一个页面,这个请求便会被发送,而受害者不会察觉到这个请求的存在,其账户也随之被删除。

六、CSRF原理获取不到受害者的Cookie

为了达到获取受害者Cookie的目的,攻击者可以使用XSS、XSS Worm、跨域漏洞等方式,进一步来实现获取受害者Cookie的目的。其中,XSS是最为常见的攻击手段。攻击者注入JS代码后,获得了Cookie,然后发送到了攻击者的服务器上。XSS Worm更为危险,有了它,只要用户访问了攻击者的复制的网页,该病毒便会自动向所有用户的好友发送具有传染性的消息或网址,很快就会造成恶性传播。除了这两种方式,文件上传漏洞、Http Referer跨域等方式都可能被利用来获取到受害者的Cookie。

七、CSRF Token生成原理

一般来说,CSRF攻击防御都需要用到Token技术。这类Token有两种生成方法:

  1. 基于服务器Token,也就是每次生成的Token都是随机数,放到cookie或隐藏表单里面,服务器通过验证Token的值来遍历可信请求,如果验证成功则允许请求。这种方式需要服务器开销较多,但是更为安全。
  2. 基于用户Token,每个用户登录系统时,唯一的用户Token就创建出来,然后将这个Token和之后证明功能的流程中用的状态绑定到一起,一旦发现存在CSRF的情况,就将当前状态全部删除。这种方式不容易被攻击,但是效率较低。

八、CSR原理

CSR(Client-side Rendering),即客户端渲染,是一种在客户端生成用户界面的方式。此种方式0前端工程师可直接降低后端代码的负载,并且页面展示效果较好,但同时这也会带来安全问题,容易导致CSRF攻击等漏洞;通过用户输入和表单提交可以发起CSRF攻击,也能够基于用户历史错误的行为来构造XSS攻击,故前端工程师对于基本的安全问题必须要有足够的了解。

九、CSRF攻击

CSRF攻击的最终目的是要让受害者不知不觉间向服务器发送请求。攻击者需要了解被攻击系统的请求方式,然后初始化一些参数,最终组装成请求参数提交至服务器。提交恶意请求的方式有多种,其中最常见的就是提交表单,攻击者会通过以下方式发起CSRF攻击:

一、提交表单
二、构造一个image对象,利用javascript发起post请求发出。
三、修改用户账户信息
四、利用iframe来发送CSRF攻击请求,直接跳转至相关代码或者结果页面而不要主动发起请求。

十、CSRF危害

CSRF攻击主要针对用户隐私数据、用户既有资源的篡改、用户无法感知恶意客户端的危害。以上这些危害都会影响到用户,导致资金的损失、账户的被盗等严重问题,因此,科技界与法律界应该共同面对并解决CSRF攻击带来的弊端。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/238826.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-12 12:13
下一篇 2024-12-12 12:13

相关推荐

  • Harris角点检测算法原理与实现

    本文将从多个方面对Harris角点检测算法进行详细的阐述,包括算法原理、实现步骤、代码实现等。 一、Harris角点检测算法原理 Harris角点检测算法是一种经典的计算机视觉算法…

    编程 2025-04-29
  • 瘦脸算法 Python 原理与实现

    本文将从多个方面详细阐述瘦脸算法 Python 实现的原理和方法,包括该算法的意义、流程、代码实现、优化等内容。 一、算法意义 随着科技的发展,瘦脸算法已经成为了人们修图中不可缺少…

    编程 2025-04-29
  • 神经网络BP算法原理

    本文将从多个方面对神经网络BP算法原理进行详细阐述,并给出完整的代码示例。 一、BP算法简介 BP算法是一种常用的神经网络训练算法,其全称为反向传播算法。BP算法的基本思想是通过正…

    编程 2025-04-29
  • GloVe词向量:从原理到应用

    本文将从多个方面对GloVe词向量进行详细的阐述,包括其原理、优缺点、应用以及代码实现。如果你对词向量感兴趣,那么这篇文章将会是一次很好的学习体验。 一、原理 GloVe(Glob…

    编程 2025-04-27
  • 编译原理语法分析思维导图

    本文将从以下几个方面详细阐述编译原理语法分析思维导图: 一、语法分析介绍 1.1 语法分析的定义 语法分析是编译器中将输入的字符流转换成抽象语法树的一个过程。该过程的目的是确保输入…

    编程 2025-04-27
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • Linux修改文件名命令详解

    在Linux系统中,修改文件名是一个很常见的操作。Linux提供了多种方式来修改文件名,这篇文章将介绍Linux修改文件名的详细操作。 一、mv命令 mv命令是Linux下的常用命…

    编程 2025-04-25
  • git config user.name的详解

    一、为什么要使用git config user.name? git是一个非常流行的分布式版本控制系统,很多程序员都会用到它。在使用git commit提交代码时,需要记录commi…

    编程 2025-04-25
  • Java BigDecimal 精度详解

    一、基础概念 Java BigDecimal 是一个用于高精度计算的类。普通的 double 或 float 类型只能精确表示有限的数字,而对于需要高精度计算的场景,BigDeci…

    编程 2025-04-25

发表回复

登录后才能评论