Session相对于Cookie更安全,安全在哪里?

来源:2-10 HTTP相关_2

lizhi_duan

2019-03-22

Session的一种实现方式是基于cookie的,这样其实和使用cookie并没有本制的区别,服务端去鉴别查找session使用的同样是客户端请求头中的session id,session相对安全在哪里?同样是可以伪造的吧?

写回答

1回答

翔仔

2019-03-23

要搞清楚这个问题首先需要真正弄清楚cookie和session。

cookie分为二种

1,以文件方式存在硬盘空间上的长期性的cookie

2,停留在浏览器所占内存中的临时性的cookie

浏览网站时,你会经常发现网站登录的地方,会有提示,问你是不是要记住自己的登录状态,像这种情况,登录时填写的一些信息会被以文件的方式存放在客户端的硬盘上。

当用户登录后,session会在cookie端产生一个session_id,这个session_id是存于浏览器所占用的内存当中。当你关闭浏览器后,session_id也要消失了。同学提到的session机制就是借助于cookie机制来达到保存标识的目的,这样就可以解决HTTP协议无状态的缺陷。

session是一种服务器端的信息管理机制,它把这些文件信息以文件的形势存放在服务器的硬盘空间上,这种情况是默认的。当客户端向服务器发出请求时,要求服务器端产生一个session时,服务器端会先检查一下,客户端的cookie里面有没有session_id,是否已经过期。如果有这样的session_id的话,服务器端会根据cookie里的session_id把服务器的session检索出来。如果没有这样的session_id的话,服务器端会重新建立一个。

接下来来讲讲安全性,session的sessionID是放在cookie里,要想攻破session的话,第一要攻破cookie。攻破cookie后,想要得到 sessionID,而sessionID是要有人登录,或者启动session_start才会有,你不知道什么时候会有人登录。第二,sessionID是加密的,第二次session_start的时候,前一次的sessionID就没有用了,session过期时sessionid也会失效,想在短时间内功破加了密的 sessionID很难。session是针对某一次通信而言,会话结束session也就随着消失了,而真正的cookie存在于客户端硬盘上的一个文本文件。


3
5
翔仔
回复
为了angular耻辱上线
同学好,这个主要取决于服务器的机制, 一般情况下,session都是存储在内存里,当服务器进程被停止或者重启的时候,内存里的session也会被清空,但是如果设置了session的持久化特性,也就是这里说的信息管理机制,服务器就会把session保存到硬盘上,当服务器进程重新启动或这些信息将能够被再次使用,Weblogic Server支持的持久性方式包括文件、数据库、客户端cookie保存和复制。 当时回答同学问题的时候有部分内容直接参考的博文,可能写得有歧义,特此说明一下
2019-10-07
共5条回复

剑指Java面试-Offer直通车 百度资深面试官授课

招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航

8427 学习 · 1870 问题

查看课程