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

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

  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. 验证码复用问题,验证码输入一次,重放修改账号密码,相当于就是爆破攻击了,跟没有验证码一样的。所以每次登录验证码都要变,这样才能放置爆破攻击。验证码不变,修改密码,显示密码错误,验证码可以爆破,如果显示验证码错误,就不可以爆破。一种特殊情况,简单的验证码可以使用插件直接识别,所以如何保证每次登录,验证码都会改变呢?大家思考一下吧?

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

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

相关文章

时限挑战——深度解析Pytest插件 pytest-timeout

在软件开发中,测试用例的执行时间通常是一个关键考虑因素。Pytest插件 pytest-timeout 提供了一个强大的插件,允许你设置测试用例的超时时间。本文将深入介绍 pytest-timeout 插件的基本用法和实际案例,助你精确掌控测试用例的执行时限。 什么是pytest-timeout? pytest-tim…

Rustdesk 中VP8 / VP9 / AV1 是什么?

环境: Rustdesk1.1.9 VP8 / VP9 / AV1 问题描述: VP8 / VP9 / AV1 是什么? 解决方案: 1.VP8、VP9和AV1是视频编解码器,用于压缩和解压缩视频数据。它们是由Google和Alliance for Open Media(AOM&#…

seldom之数据驱动

seldom之数据驱动 如果自动化某个功能,测试数据不一样而操作步骤是一样的,那么就可以使用参数化来节省测试代码。 seldom是我在维护一个Web UI自动化测试框,这里跟大家分享seldom参数化的实现。 GitHub:GitHub - SeldomQA/seld…

设计模式—行为型模式之备忘录模式

设计模式—行为型模式之备忘录模式 备忘录(Memento)模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。该模式又叫快照模…

jdk17新特性——文本块(即多行的字符串)增强

目录 一、文本块(即多行的字符串)概述二、文本块(即多行的字符串)示例2.1、jdk17之前 多行字符串处理方式2.2、jdk17及以后版本 多行字符串处理方式2.3、注意事项 三、文本块(即多行的字符串)转义字符示例3.1、jdk17及以后版本 多行字符串的转义字符处理方式示例一3.2、jdk17及…

又一款在线文档写作神器-Writerside

背景 最近自己整理一款在线文档,不小心,又发现github上有一款很比较符合我想法的文档,仔细跟踪以下,这款工具是 Writerside,竟然是jetbrains 出品,可以单独下载,也可以使用idea的插件使用&…

K8s知识点总结_part2

为什么我们会需要 Pod? 容器的本质是一种特殊的进程,如果映射到系统中,容器镜像就是这个系统里的“.exe”安装包。 那么 Kubernetes 呢?Kubernetes 就是操作系统 在一个真正的操作系统里,进程并不是“孤苦伶仃”地独…

软考之软件工程

一、瀑布模型 严格区分阶段,每个阶段因果关系紧密相连,只适合需求明确的项目 缺点:软件需求完整性、正确性难确定;严格串行化,很长时间才能看到结果;瀑布模型要求每个阶段一次性完全解决该阶段工作&#xf…

LeetCode_11_中等_盛最多水的容器

文章目录 1. 题目2. 思路及代码实现(Python)2.1 双指针 1. 题目 给定一个长度为 n n n 的整数数组 h e i g h t height height 。有 n n n 条垂线,第 i i i 条线的两个端点是 ( i , 0 ) (i, 0) (i,0) 和 ( i , h e i g h t [ i ] ) (i…

Python入门(一)

anaconda安装 官网:https://www.anaconda.com下载 jupyter lab 简介: 包含了Jupyter Notebook所有功能。 JupyterLab作为一种基于web的集成开发环境,你可以使用它编写notebook,操作终端,编辑markdown文本&#xf…

openGauss学习笔记-205 openGauss 数据库运维-常见故障定位案例-业务运行时整数转换错

文章目录 openGauss学习笔记-205 openGauss 数据库运维-常见故障定位案例-业务运行时整数转换错205.1 业务运行时整数转换错205.1.1 问题现象205.1.2 原因分析205.1.3 处理办法 openGauss学习笔记-205 openGauss 数据库运维-常见故障定位案例-业务运行时整数转换错 205.1 业务…

CSS之边框样式

让我为大家介绍一下边框样式吧!如果大家想更进一步了解边框的使用,可以阅读这一篇文章:CSS边框border 属性描述none没有边框,即忽略所有边框的宽度(默认值)solid边框为单实线dashed边框为虚线dotted边框为点线double边框为双实线 代码演示&…

Vulnhub靶机:FunBox 4

一、介绍 运行环境:Virtualbox 攻击机:kali(10.0.2.15) 靶机:FunBox 4(10.0.2.29) 目标:获取靶机root权限和flag 靶机下载地址:https://download.vulnhub.com/funbo…

Java 面向对象案例 03(黑马)

代码: public class phoneTest {public static void main(String[] args) {phone [] arr new phone[3];phone p1 new phone("华为",6999,"白色");phone p2 new phone("vivo",4999,"蓝色");phone p3 new phone("苹…

喷墨打印机市场分析:预计2029年将达到548亿美元

喷墨打印机是将彩色液体油墨经喷嘴变成细小微粒喷到印纸上,有的喷墨打印机有三个或四个打印喷头,以便打印黄、品红青黑四色;有的是共用一个喷头,分四色喷印。 喷墨打印机是在针式打印机之后发展起来的,采用非打击的工作方式。比较突出的优点有…

STM32标准库开发——串口发送/单字节接收

USART基本结构 串口发送信息 启动串口一的时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);初始化对应串口一的时钟,引脚,将TX引脚设置为复用推挽输出。 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); GPIO_InitTypeDef GPIO_In…

第7章 7.6.5 常量指针 Page406~407

const可以限制指针指向的数据,也可以限制指针的指向 const限制指针指向的数据,不可以修改指向的数据,可以改变指向 推荐写法 常见写法:

discuz论坛附件上传限制大小2MB

我遇到了这个问题,去修改了配置PHP.ini文件没有解决. 我把他变成2000M依旧没有用,然后我选择了用户组,附件部分。如图所示: 然后这个时候我还是没有好,我同事的却不限制大小了,我去清理缓存&#xff…

k8s 容器 java 应用内存限制不生效

一 k8s java 应用内存限制不生效 回顾:Linux杂谈之java命令 namespace负责资源隔离 cgroups负责资源限制 容器JVM最佳实践 Metaspace 是 非 Heap 内存 管理空间,那么 Heap 就是操作空间 JVM内存模型简介 隔离: 两个进程完全隔离感知&#xff1…

进程线程知识

一 初识linux线程 1 线程由来 我们之前说创建一个进程,要创建进程控制块pcb,进程地址空间,页表,而且我之前的博客中都有意无意的说明这个pcb是描述进程的,是os用来管理进程的,而有了线程后,就要…