避免CSRF攻击的方案

CSRF攻击的方式

恶意网站发送对感兴趣网站的请求(或者正常网站发送恶意请求,但一般正常网站不可能这么做),显然,这肯定属于跨域请求了。

解决思路

跨域角度

首先,对跨域行为进行限制:

  • 限制cookie
    • 禁止第三方网站的cookie被携带:跨域请求时,不允许携带cookie。通过SameSite属性为strict来设置。
    • 限制cookie的作用范围:避免造成更大范围的攻击。
  • ajax请求:严格限制ajax请求的跨域白名单,并且服务端严格区分HTTP请求的动词,因为浏览器并不会阻止ajax的GET请求发出,服务端是可以处理跨域ajax的GET请求(以及OPTIONS、HEAD等),所以如果允许跨域ajax,则最多允许OPTIONS、HEAD、GET方法
  • 检查referrer首部

针对CSRF的方式

表单使用脚本自动提交

使用表单让脚本自动提交的方式可以进行CSRF攻击

form method="POST" action="https://www.a.com/update" enctype="multipart/form-data"> <input type="hidden" name="hello" value="update state"/> .....<input type="hidden" name="attack" value="csrf attack"/> 
</form> 
<script> document.forms[0].submit();
</script>
  • 只使用JSON API:避免application/x-www-form-urlencoded的form提交
  • 避免使用POST请求:该form提交只能使用GET或者POST
  • 不要对form表单进行方法重写:不要将form的POST请求重写为PUT、DELETE等
使用CSRF token进行请求验证

服务端下发用于CSRF token用于请求验证,客户端使用脚本进行请求时,携带该token进行验证,而恶意网站是无法获取到该token的值。这种方式要求token值一定要是随机生成。

  • 在表单内植入该token值:<input type="hidden" name="csrf_token" value="{{ csrf_token_value }}" />
  • 在静态资源和a链接的URL内植入token:https://www.a.com/bbb/cc?a=b&csrf_token={{csrf_token_value}}
  • 跨域的脚本请求可以使用自定义首部携带该token

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣第 411 场周赛题解

3258. 统计满足 K 约束的子字符串数量 I 给你一个 二进制 字符串 s 和一个整数 k。 如果一个 二进制字符串 满足以下任一条件&#xff0c;则认为该字符串满足 k 约束&#xff1a; 字符串中 0 的数量最多为 k。字符串中 1 的数量最多为 k。 返回一个整数&#xff0c;表示 s …

【数据结构-哈希前缀】力扣2845. 统计趣味子数组的数目

给你一个下标从 0 开始的整数数组 nums &#xff0c;以及整数 modulo 和整数 k 。 请你找出并统计数组中 趣味子数组 的数目。 如果 子数组 nums[l…r] 满足下述条件&#xff0c;则称其为 趣味子数组 &#xff1a; 在范围 [l, r] 内&#xff0c;设 cnt 为满足 nums[i] % mod…

JVM -垃圾回收器

本人在这篇文章中讲解了垃圾回收机制&#xff0c;这为前置知识 美团一面面经&#xff1a;Threadlocal&#xff08;线程局部变量的原理&#xff09;-&#xff1e;内存泄漏问题-&#xff1e;垃圾回收机制_threadlocal回收-CSDN博客 首先对前置知识漏洞做一个补充&#xff1a;ja…

open Euler22.03系统安装宝塔面板

环境&#xff1a;华为云open Euler22.03操作系统 配置&#xff1a;2核4G 1、安装宝塔面板。 登录弹性云服务器。 执行以下命令&#xff0c;下载并安装宝塔面板。 yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh &&…

【面试最常考算法】哈希表专题

题号标题题解标签难度0001两数之和Python数组、哈希表简单0041缺失的第一个正数Python数组、哈希表困难0128最长连续序列Python并查集、数组、哈希表中等0136只出现一次的数字Python位运算、数组简单0242有效的字母异位词Python哈希表、字符串、排序简单0442数组中重复的数据数…

STM32裸机和RTOS中的线程安全问题及STM32cubeMX中的线程安全策略

STM32线程安全问题 术语“线程” 和“多线程” 适用于裸机和基于RTOS的应用程序&#xff0c;线程安全问题并不只存在于基于RTOS的应用程序中&#xff1b;裸机应用程序中也存在这个问题&#xff0c;在裸机应用程序中&#xff0c;中断服务程序允许调用C库函数。线程安全问题可能…

C#基础:数据库中使用Linq作分组处理(反射/直接分组)

目录 一、使用反射分组 二、不使用反射分组 三、调用示例 四、代码demo 一、使用反射分组 private static List<GroupList<T>> GetGroupList<T>(List<T> entities, string groupByProperty) {// 获取分组字段的类型var propertyInfo typeof(T).…

Python实现水果忍者(开源)

一、整体介绍&#xff1a; 1.1 前言&#xff1a; 游戏代码基于Python制作经典游戏案例-水果忍者做出一些改动&#xff0c;优化并增加了一些功能。作为自己Python阶段学习的结束作品&#xff0c;文章最后有源码链接。 1.2 Python主要知识&#xff1a; &#xff08;1&#xf…

直播App遭受抓包后的DDoS与CC攻击防御策略

随着直播应用的普及&#xff0c;越来越多的用户开始依赖这些平台进行娱乐和社交活动。然而&#xff0c;这也使得直播平台成为网络攻击的目标之一。其中&#xff0c;DDoS&#xff08;分布式拒绝服务&#xff09;攻击和CC&#xff08;Challenge Collapsar&#xff0c;即HTTP慢速攻…

Python爬虫——爬取某网站的视频

爬取视频 本次爬取&#xff0c;还是运用的是requests方法 首先进入此网站中&#xff0c;选取你想要爬取的视频&#xff0c;进入视频播放页面&#xff0c;按F12&#xff0c;将网络中的名称栏向上拉找到第一个并点击&#xff0c;可以在标头中&#xff0c;找到后续我们想要的一些…

qt-15综合实例(电子时钟)-多态重写鼠标单击和移动事件

综合实例-电子时钟 知识点digiclock.hdigiclock.cppmain.cpp运行图 知识点 setWindowOpacity(0.5);//设置窗体透明度 QTimer* Timer new QTimer(this);//新建一个定时器 connect(Timer,SIGNAL(timeout()),this,SLOT(ShowTime())); Timer->start(1000);//启动定时器 digic…

稚晖君发布5款全能人形机器人,开源创新,全能应用

8月18日&#xff0c;智元机器人举行“智元远征 商用启航” 2024年度新品发布会&#xff0c;智元联合创始人彭志辉主持并发布了“远征”与“灵犀”两大系列共五款商用人形机器人新品——远征A2、远征A2-W、远征A2-Max、灵犀X1及灵犀X1-W&#xff0c;并展示了在机器人动力、感知、…

猫头虎分享:练习提示词Prompt有什么好方法?提高Prompt水平和质量

猫头虎是谁&#xff1f; 大家好&#xff0c;我是 猫头虎&#xff0c;别名猫头虎博主&#xff0c;擅长的技术领域包括云原生、前端、后端、运维和AI。我的博客主要分享技术教程、bug解决思路、开发工具教程、前沿科技资讯、产品评测图文、产品使用体验图文、产品优点推广文稿、…

CommonJS 和 ES6 模块化

CommonJS index.js // 导入 // 方式一&#xff1a;直接导入 // const student require(./student) // const school require(./school) // console.log(student) // console.log(school)// 方式二&#xff1a;解构导入 const { name, slogan, getTel } require(./school)/…

M-Fedya and Array(cf1793)

题意&#xff1a;小于相邻元素成为局部最小值&#xff0c;大于相邻元素成为局部最大值&#xff0c;a1和an为相邻元素&#xff0c;相邻数字相差1&#xff0c;给定局部最大值的和和局部最小值的和&#xff0c;构造函数 分析&#xff1a;让第一个为x&#xff0c;每次减1&#xff…

深扒大模型微调密码 - 从入门到技术小白都能看懂的神操作

朋友们&#xff0c;你们有没有听说过"大模型"和"微调"这两个概念呢&#xff1f;别着急,我们今天就来好好聊一聊! 想象一下,你有一个非常勤奋的小助理,它会尽最大努力帮你完成各种任务。不过有时候,它的知识储备和能力肯定有限,所以你得适时给它一些专门的…

Python基础知识点--总结

1. 注释 注释用于提高代码的可读性&#xff0c;在代码中添加说明文字&#xff0c;使代码更容易理解。 单行注释&#xff1a;使用 # 符号开头&#xff0c;注释内容在符号之后的行内。多行注释&#xff1a;使用三引号&#xff08; 或 """&#xff09;包裹注释内…

树莓派5 笔记25:第一次启动与配置树莓派5_8G

今日继续学习树莓派5 8G&#xff1a;&#xff08;Raspberry Pi&#xff0c;简称RPi或RasPi&#xff09; 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: Opencv 与 python 版本如下&#xff1a; 今日购得了树莓派5_8G版本&#xff0c;性能是同运…

springboot航班进出港管理系统--论文源码调试讲解

第2章 开发环境与技术 本章节对开发航班进出港管理系统管理系统需要搭建的开发环境&#xff0c;还有航班进出港管理系统管理系统开发中使用的编程技术等进行阐述。 2.1 Java语言 Java语言是当今为止依然在编程语言行业具有生命力的常青树之一。Java语言最原始的诞生&#xff…

SQL每日一练-0815

今日SQL题难度&#xff1a;&#x1f31f;☆☆☆☆☆☆☆☆☆ 1、题目要求 计算每个产品类别在每个月的总销售额和总销量。找出每个月销售额最高的产品类别&#xff0c;显示类别名称、销售月份、总销售额和总销量。 2、表和虚拟数据 现有两个表&#xff1a;Products 和…