当标识密码被分配给客户端时,客户端浏览器发起的后续请求会将这个“标识密码”附加到请求头参数中,这样服务器就可以区分哪些请求是同一用户。众所周知,Cookie是一种会话保持的技术方案。理论上,你可以在得到一个Cookie的时候假装成一个用户。我们说禁用cookies后会话可能无法正常工作,但是我们可以通过GET将SessionID传递给服务器,所以如果SessionID以纯文本形式传输,就存在安全风险。

假设我拿到了别的用户的淘宝网站的cookie,我放到自己的http请求里,我就可以冒充这个用户吗?

大家都知道,Cookie是会话保持技术方案的一种,从理论上说拿到了Cookie是可以冒充用户的。下面具体分析下:Cookie的机制原理我们知道HTTP协议本身就是状态的,服务器端默认情况下是无法分辨用户的,这样显然是不合理的,所以我们需要给每个访客加上一个“标识口令”,当分配了标识口令给客户端后,客户端浏览器后续发起的请求都会把这个“标识口令”附带在请求头参数里,这样服务器端就能分辨哪些请求是同一个用户了。

这个“标识口令”由服务器端生成,放置在客户端浏览器Cookie中,而服务器端对应会有一个Session,这个Session的唯一标识(SessionID)也是存储在Cookie中,篡改Cookie可以冒用请求上面讲到了,服务器端的SessionID是存储在客户端Cookie中的,这样一来其它用户一旦拿到Cookie中的SessionID后,是可以冒充原始用户发起请求的。

这似乎不合理!但是,Cookie和Session的机制是这样的。我们说在Cookie被禁用后会话可能无法正常工作,但是我们可以通过GET将SessionID传递给服务器,所以如果SessionID以纯文本的形式传输,就存在安全风险。拿到淘宝的cookies就不能冒充用户。因为cookie存储在客户端,不安全,所以当我们将用户数据存储在cookie中时,会对其进行加密。


文章TAG:为什么我禁用了cookie还是有cookie  cookie  禁用  冒充  用户  
下一篇