有了cookie为什么需要session?

使用纯客户端中的cookie就能完成会话保持,为什么需要服务端的session?
  1. session的运行机制会产生一个session_id的cookie给客户端保存,然后客户端下次请求的时候会带着这个session标识符给服务器,服务器根据这个来找session。
  2. 不使用session同样可以实现会话保持,这一点是肯定的
  3. 也许你会说安全性问题。但这就是我不解的。以下是我亲测的:

登录某网站,然后复制该网站的cookie。在另一个浏览器中打开该网站(未登录状态)并填入复制好的cookie,刷新页面,网站变成了登录状态。(我不是指所有网站,只是个别网站)
只要盗取了cookie,就能劫持session。同样的道理,如果单使用cookie,那么也是一样只要盗取了cookie就能做到冒充登录。
既然盗取了cookie,无论是session还是cookie都一样会被冒充,那为什么需要session呢?看到很多关于session和cookie的文章都是泛泛而谈,有没有真正理解了这个原理的人告诉我这个小白菜鸟真正的答案啊。
2018-09-23-19-08-16.png

阅读 10k
2 个回答
  1. 用session只需要在客户端保存一个id,实际上大量数据都是保存在服务端。如果全部用cookie,数据量大的时候客户端是没有那么多空间的。
  2. cookie只是实现session的其中一种方案。虽然是最常用的,但并不是唯一的方法。
  3. 全部在客户端保存,服务端无法验证,这样伪造和仿冒会更加容易。(伪造一个随机的id很难,但伪造另一个用户名是很容易的)
  4. 全部保存在客户端,那么一旦被劫持,全部信息都会泄露
  5. 客户端数据量变大,网络传输的数据量也会变大

楼上以基本说出了大不份,在补充一点,session是在浏览器关闭时数据就会消失,而COOKIE不会,并且两者存储的数据大小多少都不一样

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏