XSRF CRFS(跨站请求伪造,单点登录攻击) 特点和原理

article/2025/11/4 22:05:03

CSRF 特点和原理

CSRF:Cross Site Request Forgery,跨站请求伪造
概念:跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。
本质是:恶意网站把正常用户作为媒介,通过模拟正常用户的操作,攻击其登录过的站点。

它的原理如下:

  1. 用户访问正常站点,登录后,获取到了正常站点的令牌,以cookie的形式保存

在这里插入图片描述

  1. 用户访问恶意站点,恶意站点通过某种形式去请求了正常站点(请求伪造),迫使正常用户把令牌传递到正常站点,完成攻击

在这里插入图片描述

防御

cookie的SameSite

现在很多浏览器都支持禁止跨域附带的cookie,只需要把cookie设置的SameSite设置为Strict即可

SameSite有以下取值:

  • Strict:严格,所有跨站请求都不附带cookie,有时会导致用户体验不好
  • Lax:宽松,所有跨站的超链接、GET请求的表单、预加载连接时会发送cookie,其他情况不发送
  • None:无限制

这种方法非常简单,极其有效,但前提条件是:用户不能使用太旧的浏览器

验证referer和Origin

页面中的二次请求都会附带referer或Origin请求头,向服务器表示该请求来自于哪个源或页面,服务器可以通过这个头进行验证

但某些浏览器的referer是可以被用户禁止的,尽管这种情况极少

使用非cookie令牌

这种做法是要求每次请求需要在请求体或请求头中附带token

请求的时候:authorization: token

验证码

这种做法是要求每个要防止CSRF的请求都必须要附带验证码

不好的地方是容易把正常的用户逼疯

表单随机数

这种做法是服务端渲染时,生成一个随机数,客户端提交时要提交这个随机数,然后服务器端进行对比

该随机数是一次性的

流程:

  1. 客户端请求服务器,请求添加学生的页面,传递cookie
  2. 服务器
    1. 生成一个随机数,放到session中
    2. 生成页面时,表单中加入一个隐藏的表单域<input type="hidden" name="hash" value="<%=session['key'] %>">
  3. 填写好信息后,提交表单,会自动提交隐藏的随机数
  4. 服务器
    1. 先拿到cookie,判断是否登录过
    2. 对比提交过来的随机数和之前的随机数是否一致
    3. 清除掉session中的随机数

二次验证

当做出敏感操作时,进行二次验证


http://chatgpt.dhexx.cn/article/tZngiIXu.shtml

相关文章

Linux常用命令——tail命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) tail 在屏幕上显示指定文件的末尾若干行 补充说明 tail命令用于输入文件中的尾部内容。tail命令默认在屏幕上显示指定文件的末尾10行。如果给定的文件不止一个&#xff0c;则在显示的每个文件前面加一个文件名…

Linux中tail命令的使用

tail 命令可用于查看文件的内容&#xff0c;有一个常用的参数 -f 常用于查阅正在改变的日志文件。 tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上&#xff0c;并且不断刷新&#xff0c;只要 filename 更新就可以看到最新的文件内容。 tail [参数] [文件] …

Linux tail 命令

tail 命令可用于查看文件的内容&#xff0c;有一个常用的参数 -f 常用于查阅正在改变的日志文件。 tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上&#xff0c;并且不断刷新&#xff0c;只要 filename 更新就可以看到最新的文件内容。 命令格式&#xff1a…

关于tail 命令

tail命令 用于输入文件中的尾部内容。tail命令默认在屏幕上显示指定文件的末尾10行。如果给定的文件不止一个&#xff0c;则在显示的每个文件前面加一个文件名标题。如果没有指定文件或者文件名为“-”&#xff0c;则读取标准输入。 1.如果给定的文件不止一个&#xff0c;则在…

Linux命令-tail

1、tail 对应中文意思为“尾巴”“跟踪” 2、Linux系统中tail 命令用于将每个文件的最后10行打印到标准输出 3、tail -f filename 会把filename文件里的最尾部的内容显示在屏幕上 并且不断刷新 只要filename更新就可以看到最新的文件内容 常用于追踪文件内容 4、实例 tail …

tail命令,实时查看日志文件

一、前言 Linux 实时查看日志文件&#xff0c;最主要使用的就是tail命令。 linux tail命令用于显示文件尾部的内容&#xff0c;默认在屏幕上显示指定文件的末尾10行。如果给定的文件不止一个&#xff0c;则在显示的每个文件前面加一个文件名标题。如果没有指定文件或者文件名…

Linux - tail命令详解

一、作用 查看应用项目日志信息 说明&#xff1a;一般在应用项目目录下有个logs的目录文件&#xff0c;会存放日志文件&#xff0c;有个xxx.log的文件&#xff0c;可以用tail -f 动态实时查看后端日志二、语法 tail [选项] 文件名选项说明-f实时读取-1000查看最近1000行日志 …

windows下使用tail命令

tail 命令为linux 下的常用查看日志命令&#xff0c;可惜在windows下没有&#xff0c;还好有好心人开发了一个可以在Windows下的运行的小工具&#xff0c;来给分享一下: 链接: https://pan.baidu.com/s/1-LiogYgYcAEbZUstdEZURg 密码: 1w6p 使用方法&#xff1a; 下载后解压…

linux命令tail-f,【玩转Linux命令】tail命令详解

Hi&#xff0c;明娜桑&#xff0c;哦哈哟~。 今天小编给大家带来的“玩转linux命令之tail篇”&#xff0c;tail命令是咱们工作中经常用到的命令&#xff0c;常用于动态文件的查看&#xff0c;接下来搜狗华安带你来一起了解tail命令。 tail命令简介 linux tail命令用途是按照要求…

Linux之tail命令

tail命令从指定点将文件写到标准输出,使用tail命令的-f选项可以方便的查看正在改变的日志。tail -f nohup.out会把nohup.out最尾部的内容显示在屏幕上,并且不断刷新,能一直看到最新的文件内容。 命令格式 tail [必要参数] [选择参数] [文件] 命令功能 使用tail命令可以查看文…

tail命令详解

1. tail命令简介 linux tail命令用途是按照要求将指定的文件的最后部分输出到标准设备&#xff0c;一般是终端&#xff0c;通俗来讲&#xff0c;就是把某个档案文件的最后几行显示到终端上&#xff0c;如果该档案有更新&#xff0c;tail会自动刷新&#xff0c;确保你看到最新的…

Linux命令之 --- tail命令

tail命令&#xff0c;主要是查看文件内容。结合一些参数&#xff0c;更方便于查看动态的文件内容&#xff0c;比如日志信息等。 【tail -f filename】显示文件的尾部最后10行的信息&#xff0c;并且循环刷新&#xff0c;只要文件有更新&#xff0c;就会将更新信息显示到屏幕上&…

tail命令的常见用法

tail 是Linux中最常用的一个命令了, 他可以显示一个或者多个文件, 同时可以与管道符结合, tail最常用的是监视和分析日志文件等, 还可以和grep搭配使用 tail命令语法 首先了解一下tail命令的语法&#xff0c;格式如下: tail [OPTION]... [FILE]... [OPTION]是选项 [FILE]是文件…

tail 命令详解

一、tail 命令介绍 tail 命令可以将文件指定位置到文件结束的内容写到标准输出。 如果你不知道tail命令怎样使用&#xff0c;可以在命令行执行命令tail --help就能看到tail命令介绍和详细的参数使用介绍&#xff0c;内容如下&#xff08;我帮大家翻译了一下&#xff09;。 […

git之公钥登录

首先说一下我自己的理解&#xff0c;为什么要公钥登录呢&#xff1f;这样可以省去每次填写用户名和密码的麻烦。他的原理是什么呢&#xff1f;我本地发送一个带有私钥签名的请求去远程服务器(远程服务有我的公钥)&#xff0c;而服务器能够通过我的公钥验证我的私钥&#xff0c;…

Git注册登录

一、执行登陆用户名和密码命令 git config --global user.email “youexample.com”git config --global user.name “Your Name” 二、生成 .ssh 配置文件&#xff08;创建本地公钥&#xff09; ssh-keygen -t rsa -C "your_emailyouremail.com" #### 三、获取公钥四…

Git--SSH登录

SSH登录 进入当前用户的家目录 $ cd ~ 删除.ssh目录 $ rm -rvf .ssh 运行命令生成.ssh密钥目录 $ ssh-keygen -t rsa -C atguigu2018ybuqaliyun.com [注意&#xff1a;这里-C这个参数为大写的C] 进入.ssh目录查看文件列表 $ cd .ssh $ ls -LF 查看id_rsa.pub文件内容 $ cat…

git初次登陆使用

git初次登陆使用 一. 安装git 二. 在当前项目根目录点击鼠标右键,出来下图: 点击进入git命令行界面。 三.初始化项目 git init 四. 添加所有文件到项目中 git add . 五. 尝试提交所有文件 git commit -m "这里是备注信息" -a 我由于是第一次连接git,还没登…

切换电脑上登录的Git账号

切换电脑上登录的Git账号 1、在电脑桌面上右键&#xff0c;选择“Git Bash Here”&#xff0c;打开命令行 2、查看当前Git账号、邮箱&#xff1a; git config user.name git config user.email 3、切换Git账号&#xff1a; git config --global user.name 账号名 //账号…

Git配置免密登录及常用操作的详细教程(基于Gitee平台)

文章目录 前言一、SSH免密登录配置1.安装GIt2.生成SSH3.配置 SSH key4.验证SSH key是否配置成功 二、创建远程仓库1.登录自己的Gitee账号2.创建远程仓库 前言 我这里使用的是vuecli创建的项目进行代码管理&#xff0c;使用的平台是Gitee。 平台的话其实最推荐使用的平台还是G…