登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
图解Browser端访问OAuth2 API的安全性问题与解决方案 ...
图解Browser端访问OAuth2 API的安全性问题与解决方案
[ 复制链接 ]
固拆棚
2025-5-29 18:57:36
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
OAuth2是基于HTTP的认证API,一般与OAuth2搭配的API也是基于HTTP的REST风格API(比如新浪微博和github),很多人一定想过是否可以直接从浏览器端调用REST API。
我最近做了一些这方面的研究,因为OAuth2中有secret key的存在,所以纯粹的客户端是不行的,但是服务端仅仅参与认证过程,由浏览器去调用REST API则是完全可行的。
于是比如你想开发一个github应用,那么服务端只需要一个没有界面的Auth服务就可以了,大部分的工作可以让浏览器端完成,这个架构可以大大减轻服务器的压力,对于不熟悉后端语言的前端工程师来说,是个不错的选择。
首先传统的oauth过程是这样的:
首先由跳转到OAuth服务器的登录认证页面,进行登录或者授权(假如已经在别的地方登录,就只需要授权):
然后服务端通常会返回302跳转到一个带ticket参数的网址,这个网址一般是在OAuth服务器注册的地址,也有些OAuth允许客户端指定:
这样浏览器端拿到302后,会自动转到App服务器,因为请求的Query String里面带了ticket,App Server于是拿到了ticket。客户端对App Server的请求是非Https,这个ticket是不怕被截获的,因为ticket是一次性的,而且攻击者拿到了ticket没有secret key是没法去Oauth服务器骗取token的:
App Server再对Oauth Server发HTTP请求,带上Secret Key:
OAuth服务器会把access_token传给App Server:
原本如果只用服务端访问REST API,这个token保存在服务端就可以了,但是我们现在希望直接在浏览器端用XHR去访问REST API,所以我们必须把token传给浏览器端。
这时候问题出现了,对于大部分开发者而言,花钱买个证书走https是不现实的,而http请求中明文传递token是可能被截获的:
token中包含用户授权信息,只要黑客截获了token,就可以冒充用户身份去Oauth服务器为所欲为:
解决的办法是使用RSA在浏览器端生成一对RSA密钥,然后把公钥传给App Server(建议用cookie,非常方便),Server用公钥加密token后传回给客户端。
我使用的是斯坦福大学的RSA开源实现(这个真的是非常高质量的RSA实现,向斯坦福师生致敬)
http://www-cs-students.stanford.edu/~tjw/jsbn/
学者们的实现比较文艺,依赖关系稍微有些复杂,这里我把所有文件打了个包,方便大家下载:
/Files/winter-cn/RSA.rar
over,接下来在浏览器端去使用token吧。
github API 的一个开源实现,请看 https://github.com/wintercn/github.wind
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
图解
Browser
访问
OAuth2
API
相关帖子
JumpServer 堡垒机- 终端安全访问控制策略手册
使用 swagger-typescript-api 在前端项目里生成请求代码
cookie,session,token,jwt,oauth2 有什么区别?
阿里云云原生 API 网关、函数计算助力 IGame 快速构建轻休闲游戏
Flask入门:轻松掌握API路由定义
微商城系统 api.php存在RCE漏洞
python调用大模型api来进行对话
具身智能:零基础入门睿尔曼机械臂(二)——从API例程到Python实操全解析
如同在远程的局域网一样访问其中所有内网服务——真正的远程办公体验
VUE中使用AXIOS包装API代理
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
JumpServer 堡垒机- 终端安全访问控制策略手册
3
300
嗦或
2025-11-24
业界
使用 swagger-typescript-api 在前端项目里生成请求代码
1
999
电棘缣
2025-11-27
业界
cookie,session,token,jwt,oauth2 有什么区别?
1
203
万俟谷雪
2025-11-27
安全
阿里云云原生 API 网关、函数计算助力 IGame 快速构建轻休闲游戏
0
447
坪钗
2025-11-29
业界
Flask入门:轻松掌握API路由定义
4
151
缣移双
2025-12-01
教程
微商城系统 api.php存在RCE漏洞
1
43
新程序
2025-12-03
安全
python调用大模型api来进行对话
0
140
艾晓梅
2025-12-04
安全
具身智能:零基础入门睿尔曼机械臂(二)——从API例程到Python实操全解析
0
983
邹语彤
2025-12-08
安全
如同在远程的局域网一样访问其中所有内网服务——真正的远程办公体验
2
898
抑卞枯
2025-12-09
安全
VUE中使用AXIOS包装API代理
1
533
峰邑
2025-12-12
回复
(3)
莘度
2025-10-14 02:51:29
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
懂技术并乐意极积无私分享的人越来越少。珍惜
鲫疹
4 天前
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
不错,里面软件多更新就更好了
呼延冰枫
前天 09:52
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
前排留名,哈哈哈
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
科技
安全
签约作者
程序园优秀签约作者
发帖
固拆棚
前天 09:52
关注
0
粉丝关注
22
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991124
anyue1937
9994893
kk14977
6845357
4
xiangqian
638210
5
韶又彤
9998
6
宋子
9983
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9951
查看更多
今日好文热榜
338
【节点】[Adjustment-WhiteBalance节点]原
298
上海专业建筑维修服务解析:标准化流程如何
942
【分析式AI】-带你弄懂XGBoost模型
728
【分析式AI】-带你弄懂XGBoost模型
48
【分析式AI】-带你弄懂XGBoost模型
270
C语言之统计天数
237
如何使用DashVector的多向量检索
270
【分析式AI】-朴素贝叶斯算法模型
215
【分析式AI】-朴素贝叶斯算法模型
933
【睿擎派】EtherCAT总线之IO模块读写
587
python3.13 3.14 新特性 好好好
783
Python新利器:用uv轻松管理venv虚拟环境和
956
Open-AutoGLM项目衍生自研app测试思路
180
.Net-Avalonia学习笔记(目录)
435
PoloAPI 绘画接口全攻略:从参数详解到实战
144
剑指offer-50、数组中重复的数字
179
嫌 Google 的 TCREI 太复杂?RACE 会更适合
975
Spring Boot中HTTP请求参数转换和请求体JSO
531
AI手机的“简单替换陷阱”与Hadoop、Cloude
474
用C#重现Gin风格:极简、效率与可扩展性设