cookie还是session

web程序中会话跟踪是个比较棘手的问题,因为http协议是无状态协议,而你浏览网页的过程中,有时又必须要记录下当前浏览用户的信息,比如谁谁谁买了什么东西等等,这时就必须要用到会话跟踪技术。

会话跟踪常用的就是cookie和session,如果你不懂cookie或者session可以百度一下,这里我要说的是无论使用cookie还是session,都是不安全的。没有绝对安全的方式,不过有相对更加安全的方式。在不影响用户体验的前提下,怎么增加网络上的坏人做坏事的难度,一直都是个难题。

cookie是一小段文本信息,就像一张门票,上面有使用期限,但是并没有说谁可以使用。显而易见,你的门票给别人了,别人就可以用。假设你在A商城买了衣服,cookie泄露了,别人伪造一下cookie进A商城,就可以看到你买了什么衣服,快递到哪里,提前蹲点拿走你的衣服(纯属YY)。

那么cookie为什么会泄露呢?原因很多,因为cookie是存在客户端的,就是你的家用电脑、你在网吧上网的电脑、你的手机。。。。

无论是在文件中还是内存中,都是比较容易被劫获的。

session是内存中的一段信息,可以存的东西很多,使用也比cookie简单,最主要的区别是session是存在服务器端的。

既然存在内存里,用户量很大的时候,服务器是扛不住的,于是变态大的网站如做搜索的C啊B啊,都是cookie保存状态,个人电脑存一段信息存自己的会话信息压力不大,但是亿级的用户的会话信息存一个服务器或服务器集群,那压力也是杠杠的。

session不适合超大用户量,存储数据应尽量精简。

session之所以能保存用户的会话信息,是因为客户端带了门票,好吧,还是需要门票的。就好像你去火车站进站,你得拿上身份证,别人拿你的身份证去系统看了这个人存在不是逃犯没有欠债等等,然后放你过去。听上去好像很安全的样子,不过你整个容偷个身份证过来很容易蒙混过关,这在网上实现有难度但是技术到家就很简单,所以session也不安全。

session的身份证存在哪里呢?可能在cookie里面,名为sessionid。如果你禁用cookie的话,那么可能在url里面,不是url参数,在参数前面一点点。既然要带身份证,那很容易被偷身份证被假冒身份,怎么办呢?

办法就是身份证+面部识别+指纹识别+虹膜识别+血液血型DNA+++,这样安全性更高,但是也不是绝对安全,如果绝对安全那么碟中谍就不会叫不可能的任务了。虽然不是绝对安全,但是多加几把锁小偷就不会太惦记,这很有必要。

我们都知道客户端访问服务器的时候http有个请求头,如user-agent就是当前客户端的信息,我们把诸如此类的请求头存下来。下一次有人来访问,先看下session身份证系统里面有没有,有了,然后把上次带这个身份证来的人的照片拿出来看看是不是同一个,验验指纹验验血。。。

请求头可以存在服务端session或者数据库中,不过更好的方式是通过md5或其他不可逆的方式加密,然后和session身份证存一起。下次你来过安检,先检查身份证,然后把你的请求头的信息通过算法加密一遍,跟带过来的加密信息比较,匹配就通过。这样一来,即使session身份证丢失,拿到的人也必须伪造你的请求头才能通过,这样等于又加了几把锁。

可能说的有些复杂了,简单点说,每次登陆以后,将用户的浏览器、ip等数据用md5加密存起来,下次用户session或者cookie验证通过了,再将浏览器和ip等信息匹配,如果通过则安全程度较高,这样也能一定程度上防止cookie被盗等问题。就好像qq换个电脑登录,他会让你用手机再验证一下,是一样的道理。

 

你可能感兴趣的:(小知识)