一文让你彻底搞懂cookie和session产生漏洞的原理

news2024/11/24 18:40:16

首先让我们来看看登录的一般流程:

  1. 输入账号密码提交给后端;
  2. 后端进行判断账号密码是否一致,这里的逻辑根据每个程序员的想法去写;
  3. 如果通过2登录成功,跳转登录成功的页面;
    如果通过2登录失败,跳转重新登录的页面;

后台管理系统有很多文件,判断登录之后,进入这些文件都需要加以验证是否登录,否则登录就只起了一次作用,所以才会产生cookie和session的概念。会有这么一个专门的文件进行验证,这里面应该会用到cookie或者session,然后将这个文件在需要的地方进行调用。

首先让我们介绍一下第一位嘉宾:Cookie

  1. 基于身份验证;
  2. 储存在客户端(浏览器)‘,存在安全隐患
    常见的安全危害:cookie修改/伪造/盗取

可以看到无论是cookie还是session都可以进行身份验证,只是储存的位置不一致。

下面用代码演示一下具体的过程(以PHP语言为背景进行讲解):
一个简单的登录页面:在这里插入图片描述
获取提交的值,使用php进行数据库交互的代码:
在这里插入图片描述
假设登录成功后跳转添加页面:
在这里插入图片描述
失败后跳转登录页面。
但是此时有一个问题,我在不登陆的情况下,访问添加页面仍然有效,就是说我的登录没有起作用,假设这个时候添加一段代码,登陆成功后在cookie里存储东西,其他地方从cookie里面获取东西,如果获取不到,说明没有登录,如果获取到了,说明登录成功:
登录代码处:
在这里插入图片描述
在添加页面前面插入一段验证是否登录的代码:
在这里插入图片描述

一个网站里通常都有很多cookie:
在这里插入图片描述
在这里插入图片描述
我们继续回到上一个例子,当登录成功之后,cookie中的user有了值admin,当再次登录的时候,会携带这个带有user=amdin的cookie进行登录,这个时候,验证是否能够通过的代码就能通过验证:
在这里插入图片描述

但是仔细想,这种验证有安全缺陷,只是验证cookie,如果抓包修改了cookie的值直接是admin,那这样就可以直接登录了,这就是cookie修改伪造。那盗取又是什么意思呢?如果我登录以后,客户端就是有我登录的cookie,储存在自己的浏览器里面,别人如果用xss漏洞,通过js获取到你的cookie的值,这样就会造成权限维持的效果了,这里就不展开讲了。

另外还有session
3. 基于身份验证
4. 存储在服务器端(服务器)
常见的安全危害:session劫持
还是采用刚才的例子:
这是判断登录的代码,这里把登录的信息存储到了session当中:
在这里插入图片描述
这是添加的页面,进行session验证:
在这里插入图片描述
这种再次请求的时候,cookie里面就不会再出现敏感值,但是存在sessionid的值,一个sessionid对应一个session,session可以理解为打电话,如果一方挂断了电话,就结束了本次通话,当第二次用另一个浏览器进行访问的时候(另外一次电话连接),sessionid就已经变了,不同的电话连接有不同的session,既然cookie可以进行cookie伪造,那session可以嘛?我们f12可以看到,sessionid的值很复杂,伪造起来会有很多的值,可能性太多,爆破很难,尽管爆破成功了,有可能对方的sessionid已经改了,一般不会产生伪造的问题。
那产生的session劫持是什么意思呢?当一直没有关闭浏览器的时候,此时获取的sessionid就是有效的,如果没有关闭浏览器,但是长时间未操作,也会导致sessionid失效,另一种情况就是关闭了浏览器,这两种情况都会导致session失效,所以攻击必须得到未失效的session,进行session劫持,以后再讲。

补充两个知识点:万能密码/验证码

  1. 万能密码其实就是sql注入的语句,$result是有结果的,那么session里面也会存储对应的值,那么就会登录成功。
  2. 验证码复用问题,验证码输入一次,重放修改账号密码,相当于就是爆破攻击了,跟没有验证码一样的。所以每次登录验证码都要变,这样才能放置爆破攻击。验证码不变,修改密码,显示密码错误,验证码可以爆破,如果显示验证码错误,就不可以爆破。一种特殊情况,简单的验证码可以使用插件直接识别,所以如何保证每次登录,验证码都会改变呢?大家思考一下吧?

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

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

相关文章

每日一题——LeetCode1309.解码字母到整数映射

方法一 个人方法&#xff1a; 由题意可得&#xff1a; 1、1-26对应a-z&#xff0c;只不过从10开始&#xff0c;后面要加#才能表示字母 2、10# - 26# 都是三位数&#xff0c;开头<2&#xff0c;结尾都为# 3、某个数后面两位如果不为#那么该数为1-9对应a-i&#xff0c;如果…

pikachu_csrf通关攻略

csrf&#xff08;get&#xff09; 打开pikachu靶场&#xff1a; 1. 根据提示给的账户密码进行登录 2. 打开代理拦截数据包将拦截数据发送到已打开的burp中&#xff1a; 修改数据进行发包&#xff1a; 从上面的url可见&#xff0c;修改用户信息的时候&#xff0c;是不带任何不…

npm ERR! code CERT_HAS_EXPIRED npm ERR! errno CERT_HAS_EXPIRED

npm install时报错code CERT_HAS_EXPIRED 一、报错情况二、解决方案 一、报错情况 一直用的好好的&#xff0c;突然今天发现npm install 出问题了&#xff0c;具体报错如下&#xff1a; npm ERR! code CERT_HAS_EXPIRED npm ERR! errno CERT_HAS_EXPIRED npm ERR! request to…

Flink中的时间和窗口(时间语义,水位线,窗口,迟到数据的处理)

目录 Flink中的时间和窗口 1时间语义 1.1Flink中的时间语义 1.1.1处理时间 1.1.2事件时间 1.2那种时间语义更重要 2 水位线 2.1 事件时间和窗口 2.2 什么是水位线 2.3 如何生成水位线 2.3.1使用WatermarkGenerator 2.3.2使用SourceFunction 2.4 水位线的传递 2.5 水位…

【LeetCode每日一题】670. 最大交换

2024-1-22 文章目录 [670. 最大交换](https://leetcode.cn/problems/maximum-swap/)思路&#xff1a; 670. 最大交换 思路&#xff1a; 从后往前遍历整数的字符数组&#xff0c;找到第一个比当前最大值小的数字&#xff0c;然后将该数字与最大值进行交换。 将给定的整数转换为…

PALWORLD linux centos7开服教程

开放端口8211 iptables -A INPUT -p udp -p tcp --dport 8211 -j ACCEPT iptables -A INPUT -p udp -p udp --dport 8211 -j ACCEPT yum -y install glibc.i686 libstdc.i686 screen libcurl.i686 yum install glibc-devel.i686 yum install libstdc-devel.i686 yum -y ins…

若依框架教程

心血来潮&#xff0c;写一篇关于ruoyi【若依】框架从0-1的教程。说一下使用感受吧&#xff0c;如果有一个架构师或者老手已经把架构改造完成也能指导你如何快速上手&#xff0c;那么你在后面的增删改查系列开发起来会如鱼得水。如果没有人改造&#xff0c;也没有人教你&#xf…

vue3源码(一)搭建开发环境

Monorepo:是管理项目代码的一个方式&#xff0c;指在一个项目仓库(repo)中管理多个模块/包(package) vue3源码采用Monorepo管理项目 vue3项目架构 搭建Monorepo环境 1.全局安装pnpm npm install pnpm -g # 全局安装pnpm pnpm init -y # 初始化配置文件创建.npmrc文件&#x…

小红书多模态团队建立新「扩散模型」:解码脑电波,高清还原人眼所见

近些年&#xff0c;研究人员们对探索大脑如何解读视觉信息&#xff0c;并试图还原出原始图像一直孜孜不倦。去年一篇被 CVPR 录用的论文&#xff0c;通过扩散模型重建视觉影像&#xff0c;给出了非常炸裂的效果—— AI 不光通过脑电波知道你看到了什么&#xff0c;并且帮你画了…

强化学习13——Actor-Critic算法

Actor-Critic算法结合了策略梯度和值函数的优点&#xff0c;我们将其分为两部分&#xff0c;Actor&#xff08;策略网络&#xff09;和Critic&#xff08;价值网络&#xff09; Actor与环境交互&#xff0c;在Critic价值函数的指导下使用策略梯度学习好的策略Critic通过Actor与…

【BBuf的CUDA笔记】十三,OpenAI Triton 入门笔记一

0x0. 前言 2023年很多mlsys工作都是基于Triton来完成或者提供了Triton实现版本&#xff0c;比如现在令人熟知的FlashAttention&#xff0c;大模型推理框架lightllm&#xff0c;diffusion第三方加速库stable-fast等灯&#xff0c;以及很多mlsys的paper也开始使用Triton来实现比…

瑞_力扣LeetCode_104. 二叉树的最大深度

文章目录 题目 104. 二叉树的最大深度题解后序遍历 递归实现后序遍历 迭代实现层序遍历 题目 111. 二叉树的最小深度题解后序遍历层序遍历 题目 226. 翻转二叉树题解 &#x1f64a; 前言&#xff1a;本文章为瑞_系列专栏之《刷题》的力扣LeetCode系列&#xff0c;主要以力扣Lee…

Pandas.Series.sum() 求和(累和) 详解 含代码 含测试数据集 随Pandas版本持续更新

关于Pandas版本&#xff1a; 本文基于 pandas2.2.0 编写。 关于本文内容更新&#xff1a; 随着pandas的stable版本更迭&#xff0c;本文持续更新&#xff0c;不断完善补充。 传送门&#xff1a; Pandas API参考目录 传送门&#xff1a; Pandas 版本更新及新特性 传送门&…

sqlmap使用教程(3)-探测注入漏洞

1、探测GET参数 以下为探测DVWA靶场low级别的sql注入&#xff0c;以下提交方式为GET&#xff0c;问号&#xff08;?&#xff09;将分隔URL和传输的数据&#xff0c;而参数之间以&相连。--auth-credadmin:password --auth-typebasic &#xff08;DVWA靶场需要登录&#xf…

【GitHub项目推荐--微软开源的课程(Web开发课程/机器学习课程/物联网课程/数据科学课程)】【转载】

微软在 GitHub 开源了四大课程&#xff0c;面向计算机专业或者入门编程的同学。分别是 Web 开发课程、机器学习课程、物联网课程和数据分析课程。 四大课程在 GitHub 上共斩获 90K 的Star&#xff0c;每一课程包含 20 多小节&#xff0c;完成课程大约需要 12 周。每小节除了视…

《统计学习方法:李航》笔记 从原理到实现(基于python)-- 第1章 统计学习方法概论

文章目录 第1章 统计学习方法概论1.1 统计学习1&#xff0e;统计学习的特点2&#xff0e;统计学习的对象3&#xff0e;统计学习的目的4&#xff0e;统计学习的方法1.2.1 基本概念1.2.2 问题的形式化 1.3 统计学习三要素1.3.1 模型1.3.2 策略1.3.3 算法 1.4 模型评估与模型选择1…

【BIAI】Lecture 6 - Somatosensory systems

Lecture 6- Somatosensory systems 专业术语 somatosensory system 体感系统 Thermoreceptors 温度感受器 Photoreceptors 光感受器 Chemoreceptoprs 化学感受器 hairy skin 毛发皮肤 glabrous skin 光滑皮肤 sensory receptors 感觉受体 dermal 真皮的 epidermal 表皮的 axon…

Vue+Element(el-switch的使用)+springboot

目录 1、编写模板 2、发送请求 3、后端返数据 1.Controller类 2.interface接口&#xff08;Service层接口&#xff09; 3.Service&#xff08;接口实现&#xff09; 4.interface接口&#xff08;Mapper层接口&#xff09; 5.xml 6.效果 4、el-switch属性 1、编写模板 …

【工作】专业沟通,有效对齐信息(及时回应,做好汇报)

【工作】专业沟通&#xff0c;及时对齐信息 文章目录 一、读书笔记二、工作case三、前人case 一、读书笔记 1、书籍推荐&#xff1a; 两本值得学习的沟通方法书籍&#xff1a; 理论&#xff1a;《说话就是生产力》实践&#xff1a;《沟通的方法》 五本补充学习沟通方法的书…

Linux 强大的网络命令:nc命令操作方法

Netcat&#xff08;或简称nc&#xff09;是一个强大的网络工具&#xff0c;它在Linux系统中广泛使用&#xff0c;可用于创建各种网络连接。它被描述为"网络的瑞士军刀"&#xff0c;因为它的功能非常灵活&#xff0c;可以在网络中执行多种任务。 在大多数Linux发行版中…