猿问

怎样有效防止Cookie诈骗?

  • 初入ThinkPHP5.0 的坑,请问大神怎样有效防止Cookie的诈骗呢?之前使用Node搭建服务器的时候有同样的问题,只不过当时没时间探究下去,直接使用了Cookie中的属性HttpOnly = true

遇到的问题如下:

1. 使用HttpOnly可以有效防止JavaScript对Cookie的操作,但是在某些特定情况下,还是可以修改的,比如使用Chrome浏览器,可以在控制台双击Cookie实现修改
2. 如果使用SESSION,在Chrome的控制台中可以看见 "PHPSESSID" 类似的Cookie,使用其他浏览器,简单修改下Cookie,很容易实现Cookie诈骗
3. 服务器的用户登录如果使用cache写文件的方式记录用户的身份,也要确保是哪个用户登录的,之前想过用MAC码,但是好像获取不了
4. 如果通过获取用户的设备信息来确保Cookie的安全性,万一用户在浏览器中使用移动端视窗打开,这样子的用户设备是会改变的    
  • 曾经考虑过记录IP,但是IP不定的,无效果
  • 直接点怎样可以让Cookie保证"唯一性",就是确保相同的cookie,只在原设备(使用帐号密码登录的设备)生效,即使是换了浏览器。
请问大神如果有效防止Cookie诈骗实现安全登录呢?

打个比喻,下图红线画的Cookie,可以通过其他浏览器 :

document.cookie = "PHPSESSID = 对应的key值"
刷新一下就可以实现登录了,怎样有效防止这样的行为

呼啦一阵风
浏览 546回答 3
3回答

慕尼黑的夜晚无繁华

存放COOKIE的时候 存一个A 一个key=>value 后端存COOKIE的时候 自己用保密的私钥B 通过算法(B+key=>value) 得出A把A和key=>value 同时存在客户端,使用的时候 也必须用同等的算法校验下数据合法性

汪汪一只猫

应该信任客户端的。不信任客户端的话,用token对应用户id,实现挤掉登陆状态功能,能满足需求不?
随时随地看视频慕课网APP
我要回答