当前位置: 首页 > news >正文

✅技术社区项目—JWT身份验证

通用的JWT鉴权方案

JWT鉴权流程

在这里插入图片描述

基本流程分三步:
● 用户登录成功之后,后端将生成的jwt返回给前端,然后前端将其保存在本地缓存;
● 之后前端与后端的交互时,都将iwt放在请求头中,比如可以将其放在Http的身份认证的请求头 Authorization ,也可以通过自定义的请求头来传递
● 后端接收到用户的请求,从请求头中获取iwt,然后进行校验,通过之后,才响应相关的接口:否则表示未登3.买

|说明:技术派沿用session的方案,依然将iwt写入到cookie中

问题1
注意技术派里面的实现,即便jwt校验通过了,我们也依然从redis中去查了一下,判断是否有效
为什么这么设计呢?
● 因为jwt本身无状态,后端完全可以将redis这一层的存储都直接干掉,纯依赖jwt的特性来完成身份鉴权,但是由于它的无状态,后端减少存储压力是一个好处,同样也是一个弊端,后端失去了token的管控权限,如果我们希望提前失效某些用户身份,则无法支持
● 鉴于此,我们依然保留了redis中存储iwt的方案(这是主要原因,当然技术派作为一个让大家获取更多的知识点教学相长的项目,我们会尽可能的将相关知识点给引入进来,且尽量满足大厂项目规范来实现)

问题2
如何防范csrf攻击

使用jwt预防csrf攻击的主要原理就是jt是通过请求头,由is主动塞进去传递给后端的,而非cookie的方式,从而避免csrf漏洞攻击。

但是技术派的jwt也是用cookie进行携带jwt,并不能解决上面这个问题:同样的,session的方案,也可以将sessionld通过请求头的方式传递,按照这个说法也能避免csrf啊

当然上面这么说,完全没有问题,我们就一项技术本身而言,通常是基于其"官配”方案来讨论其优缺点,即以上的对比,基于下面的搭配来进行的
session-cookie 方案
jwt-requestHeader方案

补充:

● 使用Cookie来携带JWT令牌确实不能完全解决CSRF(Cross-Site Request Forgery,跨站请求伪造)攻击。尽管JWT通过Cookie传输可以提供一定程度的安全性,但它并不能防止CSRF攻击的发生。
● CSRF攻击利用了用户的已认证会话,在用户不知情的情况下,向目标网站发送未经授权的请求。即使JWT被存储在Cookie中,攻击者仍然可以通过构造恶意页面或者其他方式来触发用户在目标网站上的请求,从而利用用户的身份进行操作。
● 为了防止CSRF攻击,通常需要采取额外的措施,比如在请求中添加CSRF令牌(也称为同步令牌或者表单令牌),这样服务器可以验证请求是否来自合法的源。另外,确保敏感操作需要额外的确认步骤,比如输入密码或者进行双因素认证,也是防范CSRF攻击的有效方法。

总之,虽然使用Cookie传输JWT可以提高安全性,但要完全防止CSRF攻击,还需要结合其他安全措施。

相关文章:

✅技术社区项目—JWT身份验证

通用的JWT鉴权方案 JWT鉴权流程 基本流程分三步: ● 用户登录成功之后,后端将生成的jwt返回给前端,然后前端将其保存在本地缓存; ● 之后前端与后端的交互时,都将iwt放在请求头中,比如可以将其放在Http的身份认证的请求头 Author…...

5.2 Ajax 数据爬取实战

目录 1. 实战内容 2、Ajax 分析 3、爬取内容 4、存入MySQL 数据库 4.1 创建相关表 4.2 数据插入表中 5、总代码与结果 1. 实战内容 爬取Scrape | Movie的所有电影详情页的电影名、类别、时长、上映地及时间、简介、评分,并将这些内容存入MySQL数据库中。 2、…...

276.【华为OD机试真题】矩阵匹配(二分法—JavaPythonC++JS实现)

🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目-矩阵匹配二.解题思路三.题解代码Python题解代码…...

java——多线程基础

目录 线程的概述多线程的创建方式一:继承Thread类方式二:实现Runnable接口方式三:利用Callable接口、FutureTask类来实现。Thread常用的方法 线程安全问题线程安全问题概述线程安全问题案例取钱案例描述模拟代码如下:执行结果 线程…...

Python服务器监测测试策略与工具:确保应用的高可用性!

在构建高可用性的应用程序时,服务器监测测试是至关重要的一环。Python作为一种强大的编程语言,提供了丰富的工具和库来帮助我们进行服务器监测测试。本文将介绍一些关键的策略和工具,帮助你确保应用的高可用性。 1. 监测策略的制定&#xff…...

Spring Security源码学习

Spring Security本质是一个过滤器链 过滤器链本质是责任链设计模型 1. HttpSecurity 【第五篇】深入理解HttpSecurity的设计-腾讯云开发者社区-腾讯云 在以前spring security也是采用xml配置的方式&#xff0c;在<http>标签中配置http请求相关的配置&#xff0c;如用户…...

大数据面试总结三

1、hdfs作为分布式存储系统&#xff0c;底层的实现的方式&#xff08;可能不正确&#xff09; 1、底层是一个分布式存储的&#xff0c;底层会将数据进行切分多个block块&#xff08;128M&#xff09;&#xff0c;并存储在不同的节点上面&#xff0c;这种分布式方式有助于提高数…...

AI赚钱套路总结和教程

最近李一舟和Sora 很火&#xff0c;作为第一批使用Sora赚钱的男人&#xff0c;一个清华学美术的跟人讲AI&#xff0c;信的人太多了&#xff0c;钱太好赚了。3年时间&#xff0c;李一舟仅通过卖课就赚了1.75亿元&#xff0c;其中《每个人的人工智能课》收入2786万元&#xff0c;…...

Linux安装jdk、tomcat、MySQL离线安装与启动

一、JDK和Tomcat的安装 1.JDK安装 直接上传到Linux服务器的&#xff0c;上传jdk、tomcat安装包 解压JDK安装包 //解压jdk tar -zxvf jdk-8u151-linux-x64.tar.gz 置环境变量(JAVA_HOME和PATH) vim /etc/profile 在文件末尾添加以下内容&#xff1a; //java environment expo…...

Python爬虫-使用代理伪装IP

爬虫系列&#xff1a;http://t.csdnimg.cn/WfCSx 前言 我们在做爬虫的过程中经常会遇到这样的情况&#xff0c;最初爬虫正常运行&#xff0c;正常抓取数据&#xff0c;一切看起来都是那么的美好&#xff0c;然而一杯茶的功夫可能就会出现错误&#xff0c;比如 403 Forbidden&…...

Typora结合PicGo + 使用Github搭建个人免费图床

文章目录 一、国内图床比较二、使用Github搭建图床三、PicGo整合Github图床1、下载并安装PicGo2、设置图床3、整合jsDelivr具体配置介绍 4、测试5、附录 四、Typora整合PicGo实现自动上传 每次写博客时&#xff0c;我都会习惯在Typora写好&#xff0c;然后再复制粘贴到对应的网…...

【Redis】redis简介与安装

Redis 简介 Redis 是完全开源的&#xff0c;遵守 BSD 协议&#xff08;Berkeley Software Distribution 意思是"伯克利软件发行版&#xff09;&#xff0c;是一个高性能的 key-value 数据库。具有以下几个比较明显的特点&#xff1a; 性能极高 – Redis能读的速度可以达…...

【xss跨站漏洞】xss漏洞利用工具beef的安装

安装环境 阿里云服务器&#xff0c;centos8.2系统&#xff0c;docker docker安装 前提用root用户 安装docker yum install docker 重启docker systemctl restart docker beef安装 安装beef docker pull janes/beef 绑定到3000端口 docker run --rm -p 3000:3000 janes/beef …...

编程笔记 html5cssjs 086 JavaScript 内置对象

编程笔记 html5&css&js 086 JavaScript 内置对象 一、Object二、Array三、String四、Number五、Math六、Date七、RegExp八、Function九、示例小结 JavaScript 内置对象是 JavaScript 语言本身定义的一系列预定义的对象&#xff0c;这些对象在全局作用域中可以直接使用&…...

AttributeError: ‘DataFrame‘ object has no attribute ‘set_value‘怎么修改问题的解决

在jupyternotebook中运行&#xff1a; def remplacement_df_keywords(df, dico_remplacement, roots False):df_new df.copy(deep True)for index, row in df_new.iterrows():chaine row[plot_keywords]if pd.isnull(chaine): continuenouvelle_liste []for s in chaine.…...

Jmeter内置变量 vars 和props的使用详解

JMeter是一个功能强大的负载测试工具&#xff0c;它提供了许多有用的内置变量来支持测试过程。其中最常用的变量是 vars 和 props。 vars 变量 vars 变量是线程本地变量&#xff0c;它们只能在同一线程组内的所有线程中使用&#xff08;线程组内不同线程之间变量不共享&#…...

c#高级-正则表达式

正则表达式是由普通字符和元字符&#xff08;特殊符号&#xff09;组成的文字形式 应用场景 1.用于验证输入的邮箱是否合法。 2.用于验证输入的电话号码是否合法。 3.用于验证输入的身份证号码是否合法。等等 正则表达式常用的限定符总结&#xff1a; 几种常用的正则简写表达式…...

说说UE5中的几种字符串类

在Unreal Engine 5 (UE5) 的C中&#xff0c;与字符串相关的类主要包括&#xff1a; FString&#xff1a; Unreal Engine中用于处理字符串的主要类&#xff0c;提供了丰富的字符串操作方法和功能。 FText&#xff1a; 用于表示本地化文本的类&#xff0c;可以包含多种语言的文本…...

(done) 如何判断一个矩阵是否可逆?

参考视频&#xff1a;https://www.bilibili.com/video/BV15H4y1y737/?spm_id_from333.337.search-card.all.click&vd_source7a1a0bc74158c6993c7355c5490fc600 这个视频里还暗含了一些引理 1.若 AX XB 且 X 和 A,B 同阶可逆&#xff0c;那么 A 和 B 相似。原因&#xff1…...

洗眼镜用的超声波清洗机哪一家更好一点?好用超声波清洗机排名

在我们日常生活中&#xff0c;眼镜、首饰、手表等细小物件的清洁一直是一个让人头疼的问题。传统的清洁方法不仅耗时耗力&#xff0c;还可能因为不当的操作而损伤到这些精细的物品。那么&#xff0c;有没有一种既快捷又安全的清洁方式呢&#xff1f;答案就是使用超声波清洗机。…...

银河麒麟V10下NFS服务端的高效配置与性能优化指南

1. 银河麒麟V10与NFS服务端基础认知 第一次在银河麒麟V10上折腾NFS服务端时&#xff0c;我踩了不少坑。这个国产操作系统虽然基于Linux&#xff0c;但在软件包管理和服务配置上还是有些特殊之处。NFS&#xff08;Network File System&#xff09;作为经典的网络共享协议&#x…...

微信小程序自动化测试:自定义测试(Minium)

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快录制回放支持输入&#xff0c;文本查找&#xff0c;断言等自动化测试基础操作&#xff0c;无需编写代码&#xff0c;用例生成效率高&#xff0c;但是部分操作不支持…...

测试自动化维护成本:如何实现50%降本增效

一、自动化测试维护成本的核心痛点 1.1 成本构成分析 脚本维护成本&#xff08;占总成本60%-70%&#xff09; 页面改版导致的元素定位失效&#xff08;平均每次影响30%脚本&#xff09; 业务逻辑变更引发的用例重构&#xff08;单次维护耗时2-8小时&#xff09; 环境维护成…...

thermalmonitordDisabler:突破iOS性能枷锁的终极方案——彻底解决过热降频问题指南

thermalmonitordDisabler&#xff1a;突破iOS性能枷锁的终极方案——彻底解决过热降频问题指南 【免费下载链接】thermalmonitordDisabler A tool used to disable iOS daemons. 项目地址: https://gitcode.com/gh_mirrors/th/thermalmonitordDisabler 当你在直播过程中…...

零成本构建3D资源库:Firefox专属Sketchfab模型下载方案

零成本构建3D资源库&#xff1a;Firefox专属Sketchfab模型下载方案 【免费下载链接】sketchfab sketchfab download userscipt for Tampermonkey by firefox only 项目地址: https://gitcode.com/gh_mirrors/sk/sketchfab 在数字内容创作领域&#xff0c;高质量3D模型资…...

罗技鼠标宏压枪脚本:绝地求生精准射击的终极解决方案

罗技鼠标宏压枪脚本&#xff1a;绝地求生精准射击的终极解决方案 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 还在为《绝地求生》中的后坐力控…...

ZYNQ双核通信必看:共享内存的Cache一致性处理实战

ZYNQ双核通信中的Cache一致性实战指南 在嵌入式系统开发中&#xff0c;多核处理器间的数据共享一直是开发者面临的挑战之一。Xilinx ZYNQ系列SoC凭借其ARM双核Cortex-A9架构与可编程逻辑的完美结合&#xff0c;为高性能嵌入式应用提供了强大支持。然而&#xff0c;当两个核心需…...

Packet Tracer实战:交换机基础配置与常见问题排查

1. Packet Tracer与交换机配置入门 第一次接触网络设备配置的朋友可能会觉得交换机是个神秘的黑盒子。其实用Cisco Packet Tracer这个仿真工具&#xff0c;你完全可以在自己的电脑上搭建一个虚拟实验室。我刚开始学习时也是从这个工具入手的&#xff0c;它比真机操作更友好——…...

基于Python的线上学习资源智能推荐系统毕设

博主介绍&#xff1a;✌ 专注于Java,python,✌关注✌私信我✌具体的问题&#xff0c;我会尽力帮助你。一、研究目的本研究旨在构建一个基于Python的线上学习资源智能推荐系统&#xff0c;以实现个性化学习资源的精准推送。具体而言&#xff0c;研究目的可概括为以下几个方面&am…...

自动送料装车系统PLC控制的设计——24页

自动送料装车系统作为工业自动化领域的关键环节&#xff0c;其核心作用在于通过PLC&#xff08;可编程逻辑控制器&#xff09;实现物料输送、定位、装载等流程的精准控制。传统人工操作易受疲劳、环境等因素影响&#xff0c;导致效率波动与安全隐患。而PLC控制通过预设逻辑程序…...