黑帽联盟

 找回密码
 会员注册
查看: 1943|回复: 0

[系统安全] 解释session和cookie保存用户登录状态原理

[复制链接]
yun 黑帽联盟官方人员 

920

主题

37

听众

1364

积分

超级版主

Rank: 8Rank: 8

  • TA的每日心情
    奋斗
    2019-10-18 11:20
  • 签到天数: 678 天

    [LV.9]以坛为家II

    本帖最后由 yun 于 2016-12-23 05:29 编辑

    为了解决这种问题,PHP实现登录一般使用SESSION来实现用户的登录,验证用户名和密码之后,将用户的信息保存至SESSION中。

    同时给客户端分配一个SESSION_ID,此SESSION_ID是存储在客户端的cookies中的。当你访问别的页面时,http会将当前的cookies

    作为header头的一部分,发送给服务器,服务器根据此SESSION_ID,如果有值,去取存储在SESSION中的信息。至此,实现了用户

    状态的保持。(此实现方式有多种,原理就是这样,许多网站不一定使用SESSION来存储用户信息,但是基本上还是需要cookies来

    使用户访问不同页面时,用户的状态一直能被服务器获得)


    在你的问题的描述中,如果你换了一台机器,这时候,cookies中并没有相应的SESSION_ID,访问我购买的宝贝页面时,这个页面

    在业务上,限定了只能登录的用户才能访问,而此时,程序又拿不到对应的用户状态,因此会进行跳转。

    看到这里,你应该能够想到一种bug:当某黑客获得了一个已经登录用户的SESSION_ID的话,那么服务器程序就会认为此黑客就是

    这个用户,这样黑客就有权限访问用户的所有页面了,专业点的名词好像叫php的会话劫持。


    您需要登录后才可以回帖 登录 | 会员注册

    发布主题 !fastreply! 收藏帖子 返回列表 搜索
    回顶部