0

0

客户端api设计时这个返回的Acess_token是怎么保证验证安全的

php中文网

php中文网

发布时间:2016-06-06 20:14:22

|

1570人浏览过

|

来源于php中文网

原创

刚看了一份api验证流程

  1. 客户端提交账号信息(用户名+密码)到服务端

  2. 服务端验证成功,返回AccessToken给客户端存储
    3.访问受限资源时,客户端带入AccessToken就可访问。

其中第一步如果是被抓包的连接请求是不是也会返回AcessToken
返回的AcessToken被抓包后也被恶意请求的连接带上是不是也会通过验证
主要是不知道被抓包后获得的这个相同的AcessToken也用来请求服务器是怎么样验证的
请大神指点,这个AcessToken是怎么起到作用的,起到了什么作用,给点细节

回复内容:

刚看了一份api验证流程

  1. 客户端提交账号信息(用户名+密码)到服务端

  2. 服务端验证成功,返回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设置权限范围)

没什么作用,只是为了在别人不知道你的accesstoken机制的时候进行一步防范。抓包知道这回事以后,提交是可以自己修改的。进一步是需要加入一些参数签名方法,或者是参数整体加密的方法来防止篡改。

Dreamlike.art
Dreamlike.art

内置5种模型的AI图像生成器

下载

客户端和服务器会约定加密方式,AccessToken也会过期。

https双向加密可以防止别人抓到你网络传输的AcessToken,客户端在保存Token到本地的时候可以加密存储

你可以把 access token 理解为 web 下的 cookie,如果 cookie 被偷走了,其实也是不安全的。
对于中间人来说,用 https 就好。
对于终端上的攻击者,你得从业务流程上做好防范,比如限制接口调用频率,引入合理的加密增加攻击难度。

  1. 你把AcessToken看成一个常规web应用中登录以后session中存储的user_id,就算抓包抓到了,他也只是获得了一个用户的账号密码以及用户的所有信息,类似个人用户密码被盗,不至于拿到整站数据这种风险

  2. AcessToken被抓包后也被恶意请求的连接带上是不是也会通过验证?
    这个要取决于你的AcessToken生成规则,如果是简单的md5(user_id)那肯定不行,这样每个用户每次生成的AcessToken都一样了,所以需要保证每次生成以后响应给客户端的都是不一样的,然后存储在redis这种数据库中key=AccessToken,value=user_id,如果做的极致一点应该是要有失效时间的,失效了就重新发起请求获取AcessToken

  3. 关于验证问题,web客户端存cookie里,APP客户端存本地数据库,每次请求都带上,然后每次比对请求过来的accesstoken在redis中找对应的user_id值,然后服务端取到user_id进行数据获取操作

这个是基本的一个逻辑,其中应该还会牵涉业务,要根据实际情况来进行调整了

  1. OAuth2规定API必须用https,获取到token没那么容易

  2. Token是有过期时间的,通常不会很长

个人喜欢用Json Web Token,楼主可以去查查相关的资料

AccessToken?以前做微博那帮人抓取的经常去找weico的key来用...

相关专题

更多
苹果官网入口直接访问
苹果官网入口直接访问

苹果官网直接访问入口是https://www.apple.com/cn/,该页面具备0.8秒首屏渲染、HTTP/3与Brotli加速、WebP+AVIF双格式图片、免登录浏览全参数等特性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

115

2025.12.24

拼豆图纸在线生成器
拼豆图纸在线生成器

拼豆图纸生成器有PixelBeads在线版、BeadGen和“豆图快转”;推荐通过pixelbeads.online或搜索“beadgen free online”直达官网,避开需注册的诱导页面。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

82

2025.12.24

俄罗斯搜索引擎yandex官方入口地址(最新版)
俄罗斯搜索引擎yandex官方入口地址(最新版)

Yandex官方入口网址是https://yandex.com。用户可通过网页端直连或移动端浏览器直接访问,无需登录即可使用搜索、图片、新闻、地图等全部基础功能,并支持多语种检索与静态资源精准筛选。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

546

2025.12.24

JavaScript ES6新特性
JavaScript ES6新特性

ES6是JavaScript的根本性升级,引入let/const实现块级作用域、箭头函数解决this绑定问题、解构赋值与模板字符串简化数据处理、对象简写与模块化提升代码可读性与组织性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

150

2025.12.24

php框架基础知识汇总
php框架基础知识汇总

php框架是构建web应用程序的架构,提供工具和功能,以简化开发过程。选择合适的框架取决于项目需求和技能水平。实战案例展示了使用laravel构建博客的步骤,包括安装、创建模型、定义路由、编写控制器和呈现视图。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

20

2025.12.24

Word 字间距调整方法汇总
Word 字间距调整方法汇总

本专题整合了Word字间距调整方法,阅读下面的文章了解更详细操作。

47

2025.12.24

任务管理器教程
任务管理器教程

本专题整合了任务管理器相关教程,阅读下面的文章了解更多详细操作。

7

2025.12.24

AppleID格式
AppleID格式

本专题整合了AppleID相关内容,阅读专题下面的文章了解更多详细教程。

12

2025.12.24

csgo视频观看入口合集
csgo视频观看入口合集

本专题整合了csgo观看入口合集,阅读下面的文章了知道更多入口地址。

371

2025.12.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Laravel---API接口
Laravel---API接口

共7课时 | 0.6万人学习

ThinkPHP6.x API接口--十天技能课堂
ThinkPHP6.x API接口--十天技能课堂

共14课时 | 1.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号