刚看了一份api验证流程
客户端提交账号信息(用户名+密码)到服务端
服务端验证成功,返回AccessToken给客户端存储
3.访问受限资源时,客户端带入AccessToken就可访问。
其中第一步如果是被抓包的连接请求是不是也会返回AcessToken
返回的AcessToken被抓包后也被恶意请求的连接带上是不是也会通过验证
主要是不知道被抓包后获得的这个相同的AcessToken也用来请求服务器是怎么样验证的
请大神指点,这个AcessToken是怎么起到作用的,起到了什么作用,给点细节
如果传输过程中是明文传输,那么公网上是能劫持到AccessToken的,这个AccessToken在一定时间范围内,不论在谁的手里,都有其对应的用户权限。AccessToken泄露就意味着短时间内用户部分权限泄露。
1、一般API接口都是2小时有效期,APP的则是几天不等。服务器规定。
2、AccessToken可以规定只有部分权限,比如AccessToken1只能查看和编辑用户照片,AccessToken2只能查看和编辑用户好友列表。AccessToken1泄露了顶多把照片丢了,但不会把用户好友信息泄露和破坏。
这个AccessToken你可以认为是为了替换【每次传输账号密码进行验证】这个方法而产生的新方法,因为每次传输账号密码进行验证更不安全,一旦泄露那么就相当于用户所有权限永久泄露(除非用户改密码)。而AccessToken泄露则是仅在AccessToken有效时间内泄露其规定的资源范围内的权限。
服务器端并不验证是好鸟还是坏鸟拿着这个AccessToken使用。退一步讲如果黑客拿着你的账号密码登陆,服务器难道还要给你发一条短信让你输验证码么?(至少现在支付宝连自己APP内部的异常登录提示都不给你发了)
想保证AccessToken的安全,必须由用户侧(这里指服务提供商,比如segmentfault)和Oauth2提供者(比如新浪微博、微信)同时保证,中间数据传输一定要密文的才行。一般都是使用https传输,靠Oauth2提供者的https证书保证安全。如果使用http明文传输,或者https被劫持并被用户侧忽略,则AccessToken被恶意盗取的可能性就陡增。但也由于AccessToken有其权限范围,一般劫到AccessToken也做不了什么,顶多就是改改个人信息,发个垃圾微博啥的?毕竟改密码等高级权限可能这个AccessToken上没有(也不一定,很可能微博很懒根本就没给AccessToken设置权限范围)