假设我拿到了别的用户的淘宝网站的cookie,我放到自己的http请求里,我就可以冒充这个用户吗?
大家都知道,Cookie是会话保持技术方案的一种,从理论上说拿到了Cookie是可以冒充用户的。下面具体分析下:
Cookie的机制原理
我们知道HTTP协议本身就是无状态的,服务器端默认情况下是无法分辨用户的,这样显然是不合理的,所以我们需要给每个访客加上一个“标识口令”。当分配了标识口令给客户端后,客户端浏览器后续发起的请求都会把这个“标识口令”附带在请求头参数里,这样服务器端就能分辨哪些请求是同一个用户了。
这个“标识口令”由服务器端生成,放置在客户端浏览器Cookie中,而服务器端对应会有一个Session,这个Session的**标识(SessionID)也是存储在Cookie中。
篡改Cookie可以冒用请求
上面讲到了,服务器端的SessionID是存储在客户端Cookie中的,这样一来其它用户一旦拿到Cookie中的SessionID后,是可以冒充原始用户发起请求的。
这看上去是不合理的!
但是,Cookie和Session的机制如此。我们说Cookie禁用后Session可能不能正常使用,但是我们可以将SessionID以GET方式传递给服务器端,所以SessionID如果明文传输就存在安全隐患。
拿到了淘宝的Cookie是无法冒充用户的
正因为Cookie是存储在客户端且不安全的,所以我们将用户数据存储在Cookie中时都会对数据进行加密。比如会验证用户的IP、终端特征标识等。即使其他用户**了Cookie依旧是无法验证通过的。
就这个问题,理解了http协议就知道了。本题按常识来说就不可能会冒充用户,那么大的平台怎么可能安全度那么低。
脱离常识,好好掰扯掰扯http协议才有意思。http的下层是tcp协议,tcp协议是面向连接的。http实现的时候,服务器在对客户端请求做出响应后,会主动断开连接,所以一个http请求是tcp连接到断开的一套操作。所以每次http请求都是无状态,独立的,互不联系的,也就是上次请求和下次请求没**关系。为了让http请求间产生联系,于是就有了会话和cookie。那么会话和cookie到底是什么?你甚至可以把他俩理解成是一个东西。
http协议的一个请求由请求行、请求头和请求数据组成,这个知识点可以自己百度。cookie其实就是请求头中的一个,它其实就是个字符串,这个字符串保存着session的**标识或者服务器想让保存的信息。那么这俩东西是咋用的,又是如何让多个请求联系到一起的呢?
当你使用浏览器**次访问某个网站的时候,http请求是不带cookie的,如果服务器使用了session或者cookie,就会在http响应中的响应头中带上cookie返回给浏览器。http响应和请求差不多,可以自行百度。浏览器收到cookie就会保存起来,同时,服务器也会把session保存起来,保存的形式可能是个文件,也可能是文件中的字符串,也可能是数据库中的一个记录等等。前面说过,cookie中保存着session的**标识,这样当浏览器再次请求的时候,会带上cookie,服务器就会知道请求的是那个session,这样,相互独立的http请求就产生了联系!
题目可能没这么复杂,也没提到session,所以就更简单了!cookie如果不保存session的**标识,那可能会保存用户的账号和密码。如果服务器不做**安全验证,那么肯定可以冒充用户。这和普通的用户登录没啥区别!
但是就常识而言,淘宝网站不可能不做**的安全验证,具体如何验证的我也不知道,有可能通过ip,有可能在cookie的基础上加个token或者其他什么的请求头!
如果能拿到别人的cookie是可以冒充别人的。首先要清楚,cookie存储于客户端,session存储于服务器端,而http请求是无状态的。因此服务器要识别某人通常都是用session完成,而session是依赖于cookie的。浏览器在每次发送请求时,会带上cookie 而cookie会自动带上session id,这样服务器就知道这个请求是基于那个session的,也就知道了是谁。
然而有些特殊情况,比如客户端禁用了cookie,如果要保持用户登录的状态可以在发送请求时,在请求的参数里带上session id,服务器也是可以知道用户是谁,但现在讨论的是有cookie的情况,顺带说一下这个问题。
所以在cookie冒充这个问题上服务器的防范措施比较有限,比如当用户重新登录,将之前的session作废,同一用户只能有一个session。保证用户账户同一时间只能有一个设备登录。另外,某些关键性的问题上用户要输入登录密码,或者使用手机验证码,以验证身份。比如修改密码,支付时。防范cookie冒充,更多还是需要用户多注意网络安全,比如安装防病毒软件,定时查杀病毒等等。
前面看到有的说验证IP,这个基本是行不通的,现在多数APP或浏览器因为用户体验问题都需要保证用户长时间登录,而网络的不稳定会导致设备时常断网,重新连接网络后IP就会改变。从而会导致用户需要重新登录(这句是后加的)。所以验证IP是行不通的。
还有就是有人说cookie带tooken也是行不通的,都能拿到你的cookie,凭什么就拿不到你的token?
除非你知道服务器的登录机制。服务器只要稍微修改登录机制,你就很难伪装了,比如,我不在cookie存用户id,或者是加密的id你,或者对session id转换加密,或者根本不用cookie信息,总之,session在服务器,有很多种方法避免cookie伪装,当然,如果你能有什么办法侵入系统,但是能侵入系统了,你还费劲登录系统啊
仅仅cookie是不行,一般都有设备验证,所以也要带上设备IMEI uuid之类。同时还有人机校验,比如我1分钟提交60次订单,系统就有可能让你 进行人机认证,让你滑动拼图之类。一般来说客户端都是token之类,这类是有有效期的,你之所以感受不到要重新获取token,是因为在token的有效期快过前你使用了客服端,服务端发现设备没有异常就给你生了新的 替换了旧的。这个过程用户是无感知的。所以仅仅cookie是不够的,仅仅token也是不够的。要充分考虑各种机制,一一破解。
到此,以上就是小编对于ug token钱包的问题就介绍到这了,希望介绍关于ug token钱包的1点解答对大家有用。