CSRF 攻击

概述

CSRF(Cross-site request forgery,跨站请求伪造)。

它是指攻击者利用了用户的身份信息,执行了用户非本意的操作。

它首先引导用户访问一个危险网站,当用户访问网站后,网站会发送请求到被攻击的站点,这次请求会携带用户的cookie发送,因此就利用了用户的身份信息完成攻击。

image.png

防御方式

image.png

SameSite

SameSite 是一个与 HTTP 状态码和响应头相关的属性,用于定义浏览器如何处理跨站点请求。这个属性主要用于防止跨站点请求伪造(CSRF,Cross-Site Request Forgery)攻击,它允许服务器要求某些类型的 cookie 在跨站点请求中不被发送。

以下是 SameSite 属性的几种取值及其含义:

  1. Strict: 这种模式下,cookie 将不会被包含在任何跨站点请求中。也就是说,只有在请求的域与设置 cookie 的域完全一致时,cookie 才会被发送。

  2. Lax: 这种模式下,cookie 将被包含在顶层导航请求中,但不会在跨站点请求中被发送。例如,如果你从一个网站链接到另一个网站,浏览器会发送 cookie,但如果你尝试通过 JavaScript 发起一个跨站点请求,cookie 则不会被发送。get 请求会携带 cookie,但是 post 请求不携带。

  3. None: 这种模式下,cookie 将被包含在跨站点请求中。如果你想让 cookie 在跨站点请求中被发送,就需要将 SameSite 设置为 None,并且同时设置 Secure 属性,以确保 cookie 只在 HTTPS 上传输。

从 Chrome 80 开始,默认的 SameSite 变更为 SameSite=Lax,这意味着如果你的服务器没有明确设置 SameSite 属性,那么浏览器将默认以 Lax 模式处理 cookie。

为了确保跨站点请求能够正确地携带 cookie,你需要:

  • 设置 SameSite=None
  • 设置 Secure 属性,确保 cookie 只在 HTTPS 上传输。

示例代码:

Set-Cookie: key=value; SameSite=None; Secure

使用 CSRF Token

CSRF Token 是一种常见的防御机制,它要求每个请求都必须包含一个由服务器生成的、随机的、唯一的 token。服务器在处理请求时会验证这个 token 是否有效。具体步骤如下:

  1. 生成 Token: 当用户登录后,服务器生成一个 CSRF Token 并将其存储在服务器端的会话中。
  2. 发送 Token: 服务器将 Token 发送给客户端,并要求客户端在后续的请求中包含这个 Token。
  3. 验证 Token: 当客户端发起请求时,服务器会检查请求中是否包含 Token,并且验证 Token 是否与服务器端存储的 Token 匹配。

这种方法的关键在于,攻击者无法预测 Token 的值,因此即使他们能够诱导用户点击链接或提交表单,由于 Token 不匹配,请求也会被服务器拒绝。

image.png

比如这里我打开某网站,他就是使用的 csrfToken。

image.png

什么是CSRF?为什么CSRF Token写在COOKIE里面?_csrf cookie-CSDN博客

使用 Referer 检查

Referer 是 HTTP 请求头中的一个字段,用于指示请求是从哪个页面发起的。服务器可以通过检查 Referer 来防御 CSRF 攻击:

  1. 检查 Referer: 服务器在处理请求时,检查请求的 Referer 头部,确认请求是否来自可信的来源。
  2. 验证来源: 如果 Referer 头部指向的是攻击者的域名,服务器可以拒绝处理请求。

然而,这种方法有几个局限性:

  • 用户可能禁用了 Referer 头部,或者浏览器设置可能导致 Referer 头部不被发送。
  • 攻击者可以构造请求,使其 Referer 头部指向合法的来源。
  • 不能访问 base64 编码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/640757.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【北京市政府网_注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

Vue3+Vite解决跨域问题

Vue3项目 首先找到项目里面的vite.cofig.js找到代码中的server然后替换成下面的即可 server: { //主要是加上这段代码//hostport实际上就是项目的启动地址是多少host: 127.0.0.1,port: 8001,proxy: {/api: {//这里的target实际上就是真实的后端地址,看看你的路径前缀…

Google Play开发者账号被封关联风险分析以及提高上包成功率方法

一:谷歌通过多种方法判断应用是否为马甲包或存在关联,但具体算法和方法并没有对外公开,以下是一些可能属性: 1、开发者账号资料 开发者的身份,付款银行卡,绑定的手机号,辅助邮箱等,其中收款账户还是在其中…

记录github小程序短视频系统的搭建过程

GitHub - lkmc2/AwesomeVideoWxApp: 《倾心短视频》微信小程序 这个项目按readme中的来可以部署成功,但是会发现图片、视频全是空的,如下图: 修改源代码,更换图片上传与保存地址 大概涉及到这些代码块,进行更改即可。…

Ubuntu 20.04中用scrapy爬取博客园新闻首页的简单示例

一、梳理scrapy项目目录创建: 1、命令行终端定位到pycharm主目录:cd PycharmProjects 2、建立项目名称:scrapy startproject searchArticle 3、定位到项目目录下:cd searchArticle 4、设置爬虫名称与欲爬取的域名地址&#xf…

Python使用连接池操作MySQL

测试环境说明:Python版本是 3.8.10 ,DBUtils版本是3.1.0 ,pymysql版本是1.0.3 首先安装指定版本的连接池库DBUtils 、还有pymysql pip install DBUtils3.1.0 pip install pymysql1.0.3创建文件 sqlConfig.py # sqlConfig.pyimport pymysql…

FL Studio21中文版新特性!揭秘中文水果编曲神器

FL Studio 21,被广大音乐创作者昵称为“水果编曲软件”,是比利时的Image-Line公司研发的一款完整的音乐制作环境或数字音频工作站(DAW)。自从1997年首次推出以来,FL Studio一直是许多音乐制作人和爱好者的首选&#xf…

基于 Java 的浏览器——JxBrowser使用分享

软件介绍 JxBrowser 是一个基于 Java 的浏览器,它使用 Chromium 引擎来提供高性能的网页渲染和丰富的功能。它支持多种 GUI 框架,如 Swing、JavaFX 和 SWT,使得在 Java 应用程序中嵌入浏览器组件变得简单。 JxBrowser 是一个适用于多种用途…

Docker技术搭建Grafana监控平台

centos7虚拟机和docker的安装:可以参考之前的博文 CPU、mysql-exporter、docker监控模板:百度网盘 提取码:0000 先查看服务器时间是否和当前时间一致,如果不一致,查看对应设置:centos7时间同步博文 一、…

2024最新php项目加密源码

压缩包里有多少个php就会被加密多少个PHP、php无需安装任何插件。源码全开源 如果上传的压缩包里有子文件夹(子文件夹里的php文件也会被加密),加密后的压缩包需要先修复一下,步骤:打开压缩包 》 工具 》 修复压缩文件…

大小字符判断

//函数int my_isalpha(char c)的功能是返回字符种类 //大写字母返回1,小写字母返回-1.其它字符返回0 //void a 调用my_isalpha(),返回大写,输出*;返回小写,输出#;其它,输出? #inclu…

MySQL存储过程for循环处理查询结果

在MySQL数据库中,存储过程是一种预编译的SQL语句集,可以被多次调用。在MySQL中使用存储过程查询到结果后,有时候需要对这些结果进行循环处理。 1. 创建表 CREATE TABLE t_job (job_id int(11) unsigned NOT NULL AUTO_INCREMENT,job_name v…

python02 循环与容器

一、if的条件判断 1-1 if elif else 判断年龄属于哪个年龄段 # 判断学生 core input(请输入成绩) ​ if int(core) >90 :print(优秀) elif int(core) >70 and int(core) <90:print(中等) elif int(core) >60 and int(core) <70:print(及格) else:print(不及…

抖音运营_打造高流量的抖音账号

目录 一 账号定位 行业定位 用户定位 内容定位 二 账号人设 我是谁? 我的优势 我的差异化 三 创建账号 名字 头像 简介 四 抖音养号 为什么要养号&#xff1f; 抖音快速养号 正确注册抖音账号 一机一卡一号 实名认证 正确填写账号信息 养号期间的操作 五…

如何在Windows 11和10上检查计算机的正常运行时间,这里有两种方法

序言 你的计算机的正常运行时间告诉你打开计算机已经有多长时间了。如果你需要这些信息进行故障排除或其他操作&#xff0c;那么很容易在Windows 11和Windows 10操作系统上找到你的正常运行时间。我们将向你展示图形和命令行方法。让我们开始吧。 使用任务管理器查找Windows正…

webman使用summernote富文本编辑器

前言 Summernote富文本编辑器功能强大&#xff0c;可以直接从word直接复制内容过来而不破坏原有的文档格式&#xff0c;非常适合做商品详情等内容的编辑工具。本文将展示如何在php高性能框架webman中使用summernote编辑器。 下载 去Bootstrap 中文网、Summernote、jQuery官网…

JavaWeb知识点汇总(Tomcat、Servlet、MVC架构、模拟IOC、Filter、Listener)

CS、BS架构模式 创建Web项目 介绍 Tomcat是Web容器。可以将一个或多个Web项目 部署在tomcat服务器中。 Tomcat目录&#xff1a; 创建web项目步骤 新建一个project项目 pro-web 项目project和模块module的区别&#xff1a; project 通常指一个完整的软件开发实体&#xff0c;它…

小程序视频怎么保存到本地相册

在快节奏的生活中&#xff0c;小程序已成为我们获取信息和娱乐的重要渠道。但当您遇到那些精彩绝伦的小程序视频&#xff0c;是否曾想过如何将它们保存到本地相册&#xff0c;以便随时回味&#xff1f;无论您是安卓用户还是iPhone用户&#xff0c;本文将为您揭秘如何轻松实现这…

机器学习之常用算法与数据处理

一、机器学习概念&#xff1a; 机器学习是一门多领域交叉学科&#xff0c;涉及概率论、统计学、计算机科学等多门学科。它的核心概念是通过算法让计算机从数据中学习&#xff0c;改善自身性能。机器学习专门研究计算机怎样模拟或实现人类的学习行为&#xff0c;以获取新的知识…

完成商品SPU管理页面

文章目录 1.引入前端界面1.将前端界面放到commodity下2.创建菜单3.进入前端项目&#xff0c;使用npm添加依赖1.根目录下输入2.报错 chromedriver2.27.2的问题3.点击链接下载压缩包&#xff0c;然后使用下面的命令安装4.再次安装 pubsub-js 成功5.在main.js中引入这个组件 4.修改…