加入收藏 | 设为首页 | 会员中心 | 我要投稿 新余站长网 (https://www.0790zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

运营商带来新的市场机会

发布时间:2021-02-20 17:00:37 所属栏目:外闻 来源:互联网
导读:操作结束后,返回操作成功,并结束访问 OK,实验结束,看似没有cookie没有session也能凑合解决问题,其实两个操作都有很大的问题 你每访问一次需要权限的内容都需要在客户端输入用户名和密码,这一项的繁琐就不必赘述了 你的每一次操作都要与系统底层的数据

操作结束后,返回操作成功,并结束访问

OK,实验结束,看似没有cookie没有session也能凑合解决问题,其实两个操作都有很大的问题

  1. 你每访问一次需要权限的内容都需要在客户端输入用户名和密码,这一项的繁琐就不必赘述了
  2. 你的每一次操作都要与系统底层的数据库进行交互 多次少量的访问存在非常大的性能浪费。非常容易就能想到肯定是一次大量的操作更加有效率,于是就想到了缓存区
  3. 你的非重要琐碎数据也被写进数据库中,跟你的主要数据放在一起 一次次添加和删除购物车其实只是跟你这次浏览,或者叫这次会话有关,是临时的数据,跟用户的主要信息无关,它们没什么价值,纯粹的冗余数据(不排除现在有的公司觉得这种数据也有非常大的价值可以让它们巧妙的利用),用什么存放这些临时的数据,我们也很容易想到缓存区

经过这个模拟访问实验,结合前面的思考方向,我们知道了三点:

服务器上肯定存有用户的数据,你提交的增删改查它也能够处理,所以这句话中【服务器中没有保存客户端的状态】的状态并不是指用户的数据,我们的猜测不对

我们的质疑对了,无状态能实现购物车,可以通过服务器上存有的用户数据来实现

但是,使用上面这种方式实现购物车,存在三个比较大的问题。由此,我们不禁会想,这三个问题的解决是不是跟我们不确切了解的【状态】一词有关?于是,接下来我们来通过解决这三个问题来把【状态】的意义探寻下去

由上所述,我们可以在http的基础上增加一些机制来解决上面出现的三个问题

  1. 在用户端增加一个记录本是非常有必要的,正好官方加入的cookie机制跟这个一样,它的用处也确实是上面讨论的那样,一般就是用来标识访问者的身份
  2. 在服务器增加一个缓存区能同时解决后两个问题 有了这个缓存区作为一个数据缓冲,就不用一次次地访问数据库,浪费大量计算机资源,而是在最后统一归入数据库 有了这个缓存区,你就不用把临时的数据放到数据库中了,只需要在你们交流告一段落之后,再把数据整理,把有用的数据归入数据库
  3. 这里就自然引申出了一个重要的概念:会话,它作为一个缓冲存储区被从数据库中分离出来,理由并不生硬,它有其独特的重要且不可替代的作用。这个东西恰好跟官方加入的session机制一样

另外说一个非常具有迷惑性的容易让人对session的主要作用产生偏离的理解:认为session存在的价值就是给访问者分配一个sessionID代替用户名和密码

为什么非常具有迷惑性,因为session确实做了这件事,而且也起到了很大的作用,所以它是对的,但是只对一半,而且没有涉及问题的本质,这种情况是最危险的(看似很有说服力,把你说服了,所以你很难有动力继续找下去,但是真实情况跟它有偏差,但是偏差不大,所以又很难把你说服回来,只有隐隐的不对劲,这个时候你离真实最近,也离真实最远)

那就顺便说说它为什么是对的,也就是用session做的另一件有用的事:

给每个session一个ID,一方面用来方便自己查询,另一方面把这个ID给用户,用户下一次访问的时候就可以不用用户名和密码,而是直接使用这个ID来表明自己的身份

首先,这个ID安全吗?这个ID比直接传用户名和密码安全吗?

你很容易会想到,本来用户名和密码的组合还特地设置地比较复杂,你这换一组数字就代替了,是不是太不安全了? 我们知道http协议本身是完全不加密的,如果使用用户名和密码,第一次访问是放在http头中,后边自动保存了密码就会放在cookie中,这些都完全没有加密,它的安全性基本为0,就是裸奔了,只要被窃取,那就丢失了 所以,就这个意义来讲,sessionID的安全性跟使用用户名和密码没什么区别 但是其实,虽然http本身不能加密,但是有些软件什么的,能在应用层面手动给你加密,比如QQ就会使用户名密码加临时验证码联合哈希,sessionID加一个时间戳简单加密也是非常常用的方法 而且因为sessionID本身有有效期,即使丢了,也可能很快失效,造成的损失可能没那么大,而用户名跟密码丢了,那就大了 所以总结就是:不严格加密的sessionID和用户名和密码一样,都不太安全;但是相比较来说,sessionID要安全一些;而使用https是完全安全的

然后,使用sessionID有哪些好处? 方便直接根据ID查询用户对应的session 加密的时候计算量小 安全性不会降低,甚至还更高一些

OK,通过独立地解决纯http机制会产生的问题,我们探讨了cookie和session机制的本质。

而且想到:【使用http协议,服务器中不会保存客户端的状态】所产生的问题通过增加cookie和session机制解决了,是不是就意味着这个【状态】跟cookie和session的关系非常紧密?



 

(编辑:新余站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读