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

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

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

相关文章

Tensorflow2.0笔记 - 范式norm,reduce_min/max/mean,argmax/min, equal,unique

练习norm,reduce_min/max,argmax/min, equal,unique等相关操作。 范数主要有三种: import tensorflow as tf import numpy as nptf.__version__#范数参考:https://blog.csdn.net/HiWangWenBing/article/details/119707541 tensor tf.convert_to_tensor(…

汤姆·齐格弗里德《纳什均衡与博弈论》笔记(2)纳什均衡

第三章 纳什均衡——博弈论的基础 冯诺伊曼没有解决的问题 博弈论在其建立初始也显现出了严重的局限性。冯诺伊曼解决了二人零和博弈,但对多人博弈问题仍无法解决。如果只是鲁宾逊克鲁索和星期五玩游戏,博弈论可以很好地被应用,但它无法精确…

JAVA设计模式—工厂模式

JAVA设计模式—工厂模式 工厂模式是一种创建型设计模式,它提供了一种创建对象的接口,但是由子类决定要实例化的类是哪一个。工厂模式使得一个类的实例化延迟到其子类。 用代码进行举例演示 假设我们有一个产品接口 Product 和两个具体产品类 Concrete…

TensorRT英伟达官方示例解析(二)

系列文章目录 TensorRT英伟达官方示例解析(一) TensorRT英伟达官方示例解析(二) 文章目录 系列文章目录前言一、03-BuildEngineByTensorRTAPI1.1 建立 Logger(日志记录器)1.2 Builder 引擎构建器1.3 Netwo…

【GitHub项目推荐--Awesome-Go/Python/JavaScript/Java】【转载】

Awesome 译为令人惊叹的、极好的,GitHub 上有很多 Awesome 开头的开源项目。比如 Awesome-Go、Awesome-Python。 就像汇总常用的软件一样,GitHub上有大量的开源项目,开发者就会根据需要汇总一些常用的好用的资源,并且根据 Awesom…

美易官方:小米汽车交付时间传闻被官方辟谣

在科技与互联网的快速发展浪潮中,各类信息传播速度之快令人咋舌。然而,信息的真实性却时常成为公众关注的焦点。近日,关于小米汽车交付时间的谣言再次引起市场的广泛关注。小米公司发言人迅速作出回应,明确指出这些关于小米汽车交…

OCP NVME SSD规范解读-7.TCG安全日志要求

在OCP NVMe SSD规格中,TCG的相关内容涉及以下几个方面: 活动事件记录: NVMe SSD需要支持记录TCG相关的持久事件日志,用于追踪固态硬盘上发生的与TCG安全功能相关的关键操作或状态变化,如启动过程中的安全初始化、密钥…

计算机网络(第六版)复习提纲8

第三章 数据链路层 数据链路层在五层体系结构中处于第二层 链路层的任务是,把下面不可靠的物理层(信道)改成相对可靠的逻辑信道,把网络层提供的数据封装成数据帧交给物理层进行传递。 透明传输问题:不要因为封装成帧导…

当键入网址后,到网页显示,其间发生了什么

解析 URL: 浏览器地址栏输入 URL,浏览器解析 URL,从而生成发送给 web 服务器的请求信息(例如 www.example.com)。 检查域名缓存: 浏览器查看浏览器缓存系统缓存路由缓存, 如有存在缓存&#x…

并查集算法实现

测试链接 牛客测试链接 介绍 并查集(Disjoint Set)是一种用于处理集合合并与查询问题的数据结构。它支持两种操作:合并(Union)和查询(Find)。 合并操作将两个不相交的集合合并为一个集合&am…

SQL注入实战:盲注

盲注: 1、当攻击者利用SQL注入漏洞进行攻击时,有时候web应用程序会显示,后端数据库执行SQL查询返回的错误信息,这些信息能帮助进行SQL注入,但更多时候,数据库没有输出数据web页面,这是攻击者会…

JRT集中打印

之前一直在夯实基础,现在是补demo的时段了。了解过检验集中打印的人知道,集中打印的逻辑有多复杂。既要考虑普通检验报告加上换页。又要考虑微生物报告加上换页,既有A5的报告,也有A4的报告,还要考虑A4打印两个组装A5时…

ChatGPT是不是未来的灵魂伴侣?

嗨,亲爱的读者们!今天,我们要探讨的话题是有点科技感,有点时尚感,也有点梦幻感——没错,就是ChatGPT,你们心中的那位聊天界的巨星。 1. ChatGPT:我的AI小助手还会聊天 ChatGPT&…

【栈与队列专题】滑动窗口的最大值

一、滑动窗口的最大值输入:nums [1,3,-1,-3,5,3,6,7], k 3输出:[3,3,5,5,6,7]解释: 滑动窗口的位置 最大值 --------------- ----- [1 3 -1] -3 5 3 6 7 3 1 [3 -1 -3] 5 3 6 7 3 1 …

工程化代码管理高频面试题

1. git常用命令以及工作中都怎么工作 git init 初始化仓库 ​ git status 查看当前各个区域的代码状态。 ​ git log查看commit记录 ​ git reflog查看完整记录 ​ git add 添加工作区代码到暂存区 ​ Git commit 暂存区代码的提交 ​ git reset 代码的版本回退 ​ git stash …

《WebKit 技术内幕》学习之七(3): 渲染基础

3 渲染方式 3.1 绘图上下文(GraphicsContext) 上面介绍了WebKit的内部表示结构,RenderObject对象知道如何绘制自己,但是,问题是RenderObject对象用什么来绘制内容呢?在WebKit中,绘图操作被定…

finalshell连接linux的kali系统

kali的ssh服务似乎是默认关闭的,笔者在玩CentOS系统时可以直接用finalshell完成连接,但kali不行,需要先手动开启ssh服务。 开启kali的ssh服务 输入【ssh start】命令开启ssh服务,可以用【ssh status】命令查看ssh状态&#xff0c…

第40集《佛法修学概要》

请大家打开讲义第一百零六页。我们讲到大乘的果位。大乘佛法的修学跟小乘最大的差别,主要在于一句话,就是大乘佛法是一种“称性起修,全修在性”。大乘佛法的功德第一个“称性”,这个“称”就是随顺。我们一念明了的心,…

【数据结构】 链栈的基本操作 (C语言版)

目录 一、链栈 1、链栈的定义: 2、链栈的优缺点: 二、链栈的基本操作算法(C语言) 1、宏定义 2、创建结构体 3、链栈的初始化 4、链栈的进栈 5、链栈的出栈 6、获取栈顶元素 7、栈的遍历输出 8、链栈的判空 9、求链…

AtCoder Beginner Contest 337 A~G

A.Scoreboard(循环) 题意: 两个队伍进行 N N N场比赛。在第 i i i场比赛中 ( 1 ≤ i ≤ N ) (1≤i≤N) (1≤i≤N),两队各得到 X i X_i Xi​和 Y i Y_i Yi​分。比赛结束后总分更高…