Session与Cookie的区别(四)

news2024/9/24 18:26:20

咖啡寄杯的烦恼

虽然店里生意还可以,但小明无时无刻不想着怎么样发大财赚大钱,让店里的生意变得更好。

他观察到最近好多便利商店开始卖起了咖啡,而且时不时就买一送一或是第二件半价,并且贴心地提供了寄杯的服务。

寄杯就是指说你今天先喝一杯,剩下那杯我帮你记着,你下次来的时候跟我讲我再给你。

如果不提供这种服务,那买一送一就一定要两个人才能喝了(或是你立刻喝两杯),根本就是排挤像小明这样的边缘人。秉持着将心比心的原则,小明当然是希望提供寄杯服务的。

那该怎么寄呢?照之前那样不就得了吗?原本客人的手机里面会存着消费习惯之类的东西,现在多存一个还有几杯咖啡不就行了?

例如说客人买两杯只喝一杯,就在上面写着:coffee=1,代表还剩一杯咖啡,下次来的时候只要出示这个信息,就再给他一杯。

听起来十分合理,而且小明也这样做了,店里的生意变得更好,买咖啡的人愈来愈多,靠着咖啡就让单月营收翻了两倍。

一切看似非常顺利,直到小明月底对帐的时候:不对啊,为什么买咖啡的数量只有 55 杯,卖出去的却有 66 杯?

一向很相信人的小明,在那一瞬间见识到了人心的险恶之处。没错,有人自己偷改信息,例如说把 coffee=1 加个几划改成 coffee=7,就获得了额外六杯的免费咖啡。

这些奥步让小明狠狠一夜之间变成了大人,绝望的小明把悲愤转化成力量,只花了三个晚上就想到了两个解决方法。

第一个方法最简单,就是只要把存在客人手机上的信息加密就好了。

例如说原本是 coffee=1,经过小明自制的特殊加密算法之后,会变成 ED85B89167A84B631C10B046B5FB7FC0 这串只有小明知道怎么解开的密文。

这样一来,除非客人可以破解这段密码,否则信息就不可能被窜改。但有一个小缺点,那就是当小明想存的信息愈来愈多之后,这一串字也会愈来愈长,就会在客人的手机里面占更大的容量。

这个容量是有上限的,客人不会把整台手机都给你存这些信息,所以这点要特别注意。

这个方法解决问题的思路是这样的:「既然存在手机上的信息会被窜改,那我让他不能改就好」。

而第二个方法解决问题的思路是这样的:「既然存在手机上的信息会被窜改,那我把信息存在我这边不就好了吗?」

与其把那些消费习惯或是寄杯数量存在客人的手机里,不如把这些东西记在我的笔记本里面,并且用一种方式把这两个信息对应起来,这样就不怕数据会被改动了。

举例来说,小明可以在笔记本写下客人的身份证字号跟相关资讯,例如说:「A111111111 coffee=1」,接着小明只在客人的手机里面存「A111111111」。

下次客人再来消费的时候,就透过身份证字号去笔记本里面查,就知道客人到底还剩几杯咖啡了。

由于小明的笔记本每天下班都会锁在保险箱里面,因此不用害怕被偷或是被改,可以假设它一定是准确的。

而这样子的方式不把主要信息存在客人那里,而是存在自己这里,所以也不会有被窜改的风险。

可是有个问题,如果有人把身份证字号改成其他人的怎么办?那不就破功了吗?就可以伪造其他人的身份。

这个简单,不如不要用身份证字号,用一个 16 位数的英数字混合乱码好了,例如说:A59Uhe7I94J330mN,这样就很难被猜到了吧!

于是流程会变成这样:

客人那编只需要报 ID 即可,其他资讯都在小明那里

跟之前一样,他们都是透过一张纸条或者是手机里的信息来沟通,但唯一的差别是客人跟小明之间只透过 A59Uhe7I94J330mN 这个存在手机里的 ID 来验证身份,其他相关资讯都写在小明的笔记本里面。

这种验证的方法就像是我曾经去过的网咖。因为会员打咖比较便宜嘛,一小 60 变成一小 36,不办白不办,就办了一张会员卡。店员特别说明认卡不认人,一定要出示卡片才行。

我只要去打咖的时候出示这张会员卡,店员就知道我曾经消费过多少钱,也知道我喜欢点的餐点,所有的信息都是存在他们的系统里面,而我的身份就是透过这张会员卡来表示。

寄杯的例子中,会员卡就是 A59Uhe7I94J330mN 这个 ID,网咖的电脑系统就是小明的笔记本。

小明最后决定用第二种方法,也就是这种靠 ID 认人的方式来管理客人的状态。

从此之后就没有客人能够窜改信息了,而寄杯服务也运行的十分顺利,真是皆大欢喜,可喜可贺。

至于后来变得生意太好,让小明开了分店以后碰到的那些问题,就又是另外一段故事了。

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

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

相关文章

《剑指offer》:数组部分

一、数组中重复的数字题目描述:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1…

C语言fscanf和fprintf函数的用法详解

fscanf() 和 fprintf() 函数与前面使用的 scanf() 和 printf() 功能相似,都是格式化读写函数,两者的区别在于 fscanf() 和 fprintf() 的读写对象不是键盘和显示器,而是磁盘文件。这两个函数的原型为:int fscanf ( FILE *fp, char …

【力扣-LeetCode】1138. 字母板上的路径-C++题解

1138. 字母板上的路径难度中等98收藏分享切换为英文接收动态反馈我们从一块字母板上的位置 (0, 0) 出发,该坐标对应的字符为 board[0][0]。在本题里,字母板为board ["abcde", "fghij", "klmno", "pqrst", &quo…

点云转3D网格【Python】

推荐:使用 NSDT场景设计器 快速搭建 3D场景。 在本文中,我将介绍我的 3D 表面重建过程,以便使用 Python 从点云快速创建网格。 你将能够导出、可视化结果并将结果集成到您最喜欢的 3D 软件中,而无需任何编码经验。 此外&#xff0…

总投资超500亿,广州白云机场三期扩建工程的IT投资更吸引人

【科技明说 | 每日看点】2023年基建大工程计划出台,广州白云机场三期将落实百亿元投资引发业内关注。据悉,广州白云机场三期扩建工程投资达537.7亿元,计划于2025年建成投产。这是中国民航历史上规模最大的改扩建工程,其扩建工程今…

TC3xx FlexRay™ 协议控制器 (E-Ray)-01

1 FlexRay™ 协议控制器 (E-Ray) E-Ray IP 模块根据为汽车应用开发的 FlexRay™ 协议规范 v2.1 执行通信【performs communication according to the FlexRay™ 1) protocol specification v2.1】。使用最大指定时钟,比特率可以编程为高达 10 Mbit/s 的值。连接到物…

Fluent Python 笔记 第 5 章 一等函数

在 Python 中,函数是一等对象。编程语言理论家把“一等对象”定义为满足下述条件的程 序实体: 在运行时创建能赋值给变量或数据结构中的元素 • 能作为参数传给函数能作为函数的返回结果 5.1 把函数视作对象 会用 map。 5.2 高阶函数 接受函数为参数&#xff0…

基于JAVA的超级玛丽设计与实现

技术:Java等摘要:随着计算机技术及网络技术的不断发展,电子游戏越来越普及。经典游戏“超级玛丽”因其本身所具有的娱乐性与教育意义而被人们广泛接受,在广大的青少年玩家中享有极高的知名度。Java语言作为一种完全面向对象的程序…

【AI 交互式聊天】无需等待 Bing ChatGPT : 已经有一个基于搜索结果响应的 AI 交互式聊天网站了!Perplexity

Perplexity: https://www.perplexity.ai 同样的问题,我问ChatGPT,回答如下: 实现财富自由需要一系列的步骤和策略,以下是一些建议: 1. 设定目标:明确你的财务目标,并制定一个有目标的计划来实…

吾爱破解2023安卓中级题

先来看看APP界面 拖到jadx,see see java 源码 关键是要让代码跳转到这里,我这里主要是修改smali,然后重新签名打包,当然,你也可以用frida或者objection hook 传参 模仿下面的两行代码,在位置1插入 :cond_6…

循环队列来了解一下!!

笔者在之前的一篇文章,详细的介绍了:队列之单向链表与双向链表的模拟实现:https://blog.csdn.net/weixin_64308540/article/details/128742090?spm1001.2014.3001.5502 感兴趣的各位老铁,可以参考一下啦!下面进入循环…

基于Java+SpringBoot+Vue前后端分离酒店管理系统设计与实现

博主介绍:✌全网粉丝3W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建、毕业项目实战、项目定制✌ 博主作品:《微服务实战》专栏是本人的实战经验总结,《S…

linux系统常用命令

目录 一、系统介绍 二、Linux常用命令 1、Linux命令格式 2、文件目录操作命令:ls 3、文件目录操作命令:cd 4、文件目录操作命令:cat 5、文件目录操作命令:more 6、文件目录操作命令:tail 7、创建文件命令&…

【三维点云】01-激光雷达原理与应用

文章目录内容概要1 激光雷达原理1.1 什么是激光雷达?1.2 激光雷达原理1.3 激光雷达分类三角法TOF法脉冲间隔测量法幅度调制的相位测量法相干法激光雷达用途2 激光雷达安装、标定与同步2.1 激光雷达安装方式考虑因素2.2 激光雷达点云用途2.3 数据融合多激光雷达数据融…

Rust学习入门--【7】Rust 数据类型

类型系统 对于任何一门语言都是重中之重,因为它体现了语言所支持的不同类型的值。 类型系统 也是 IT 初学者最难啃的三座大山之一,而类型系统之所以难以理解,主要是没有合适的现成的参考体系。 我们说类型系统 存在的目的,就是 …

【代码随想录】-动态规划专题

文章目录理论基础斐波拉契数列爬楼梯使用最小花费爬楼梯不同路径不同路径 II整数拆分不同的二叉搜索树背包问题——理论基础01背包二维dp数组01背包一维数组(滚动数组)装满背包分割等和子集最后一块石头的重量 II目标和一和零完全背包零钱兑换 II组合总和…

JVM学习03:垃圾回收

JVM学习03:垃圾回收 1、如何判断对象可以回收 1.1、引用计数法 记录当前对象被引用的次数,当引用次数为0时则进行垃圾回收。缺点:当两个对象互相引用但并没有其他对象再引用它们时,他们的引用次数都为1,无法对其进行…

Spring Security in Action 第三章 SpringSecurity管理用户

本专栏将从基础开始,循序渐进,以实战为线索,逐步深入SpringSecurity相关知识相关知识,打造完整的SpringSecurity学习步骤,提升工程化编码能力和思维能力,写出高质量代码。希望大家都能够从中有所收获&#…

牛客寒假集训营6 E 阿宁的生成树

E-阿宁的生成树_2023牛客寒假算法基础集训营6 (nowcoder.com)开始慢慢补牛牛的题题意&#xff1a;最小生成树质数距离思路&#xff1a;最小生成树一共就两种算法&#xff0c;我们考虑Prim的过程初始连通块是1&#xff0c;然后考虑拿1和其他的结点连边当j-i<k时边权是gcd&…

【JavaSE】方法的使用

方法的使用BIT-5-方法的使用绪论1. 方法概念及使用1.1什么是方法1.2 方法定义1.3 实参和形参的关系&#xff08;重要&#xff09;1.4 没有返回值的方法2. 方法重载2.1 为什么需要方法重载2.2 方法重载概念3. 递归3.1 生活中的故事3.2 递归的概念3.2 递归执行过程分析3.3 递归练…