tlday
2017-05-06 03:39:35 +08:00
你的重点不对。不过我也不是专业的后端,浅谈几点拙见,如果有误烦请楼下不吝指出。
https 是为了防止中间人攻击,信息的发送者和接收者其实都是知道发送的是什么东西的。所以只是保证传输过程的安全可靠。(比如某个人架了免费代理,不知情的用户用了这个代理,数据报在传输过程中被记录,那么这个人就可以伪造为这个不知情的用户来窃取这个用户的信息等等,https 可以避免这种情况)
你要明确你想防御的对象是谁,是防止中间人窃取了用户 A 的"令牌"伪造成用户 A 窃取用户 A 的信息?那 https 可以很好的解决这个问题。
但是如果你想防御的是 A 用户根据接口参数猜出参数意义借以窃取 B 用户的信息,那么你要在服务端作鉴权,A 用户不应当有访问 B 用户信息的权力。
至于剩下你说的那些,无论是 session 还是 token 都只是鉴别 A 用户确实是 A 用户的"令牌",都有过期时间。
你想考虑的这种情况说,如果是用户自己的浏览器或系统,软件,被 crack,导致 cookie 等信息泄露,那么你其实能做的不多。唯一能做的就是类似(异地登录短信提醒,ip 突然变更要求重新输入密码)这种措施来提醒用户你的客户端环境不安全,可能被黑了,并提醒用户及时更换密码,更换密码的同时把所有 token 过期掉等等来最大程度降低用户损失。
oauth2.0 是开放用户部分信息给第三方使用的一种三方鉴权协议,一般用作第三方登录这种,可能并不符合你的需求。如果你想看一些比较好的实现,可以参考 github,facebook 之类的。