From fd06bfc80164eb3cbff2b862c1204bf094c7c286 Mon Sep 17 00:00:00 2001 From: click33 <2393584716@qq.com> Date: Wed, 9 Apr 2025 14:10:40 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=8D=87=E7=BA=A7=E2=80=9C=E4=B8=B4?= =?UTF-8?q?=E6=97=B6=20Token=20=E8=AE=A4=E8=AF=81=E2=80=9D=E7=AB=A0?= =?UTF-8?q?=E8=8A=82=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sa-token-doc/plugin/temp-token.md | 52 ++++++++++++++++--------------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/sa-token-doc/plugin/temp-token.md b/sa-token-doc/plugin/temp-token.md index c5d4c4cb..4b43ee77 100644 --- a/sa-token-doc/plugin/temp-token.md +++ b/sa-token-doc/plugin/temp-token.md @@ -8,31 +8,33 @@ 举个比较明显的例子:超链接邀请机制。 -比如说你在一个游戏中创建一个公会 `(id=10014)`,现在你想邀请你的好朋友加入这个公会,在你点击 **`[邀请]`** 按钮时,系统为你生成一个连接: - -``` xml -http://xxx.com/apply?id=10014 -``` - -接着,你的好朋友点击这个链接,加入了你的工会。 - -那么,系统是如何识别这个链接对应的工会是10014呢?很明显,我们可以观察出,这个链接的尾部有个id参数值为10014,这便是系统识别的关键。 - -此时你可能眉头一紧,就这么简单?那我如果手动更改一下尾部的参数改成10015,然后我再一点,岂不是就可以偷偷加入别人的工会了? - -你想的没错,如果这个游戏的架构设计者采用上述方案完成功能的话,这个邀请机制就轻松的被你攻破了。 - -但是很明显,正常的商业项目一般不会拉跨到这种地步,比较常见的方案是,对这个公会id做一个token映射,最终你看到链接一般是这样的: - -``` xml -http://xxx.com/apply?token=oEwQBnglXDoGraSJdGaLooPZnGrk -``` - -后面那一串字母是乱打出来的,目的是为了突出它的随机性,即:使用一个随机的token来代替明文显示真正的数据。 - -在用户点击这个链接之后,服务器便可根据这个token解析出真正公会id (10014) ,至于伪造?全是随机的你怎么伪造?你又不知道10015会随机出一个什么样的Token 。 - -而且为了安全性,这个token的有效期一般不会太长,给你预留五分钟、半小时的时间足够你点击它即可。 +> [!NOTE| label:业务场景] +> +> 你在一个游戏中创建一个公会 `(id=10014)`,现在你想邀请你的好朋友加入这个公会,在你点击 **`[邀请]`** 按钮时,系统为你生成一个连接: +> +> ``` xml +> http://xxx.com/apply?id=10014 +> ``` +> +> 接着,你的好朋友点击这个链接,加入了你的工会。 +> +> 那么,系统是如何识别这个链接对应的工会是10014呢?很明显,我们可以观察出,这个链接的尾部有个id参数值为10014,这便是系统识别的关键。 +> +> 此时你可能眉头一紧,就这么简单?那我如果手动更改一下尾部的参数改成10015,然后我再一点,岂不是就可以偷偷加入别人的工会了? +> +> 你想的没错,如果这个游戏的架构设计者采用上述方案完成功能的话,这个邀请机制就轻松的被你攻破了。 +> +> 但是很明显,正常的商业项目一般不会拉跨到这种地步,比较常见的方案是,对这个公会id做一个token映射,最终你看到链接一般是这样的: +> +> ``` xml +> http://xxx.com/apply?token=oEwQBnglXDoGraSJdGaLooPZnGrk +> ``` +> +> 后面那一串字母是乱打出来的,目的是为了突出它的随机性,即:使用一个随机的token来代替明文显示真正的数据。 +> +> 在用户点击这个链接之后,服务器便可根据这个token解析出真正公会id (10014) ,至于伪造?全是随机的你怎么伪造?你又不知道10015会随机出一个什么样的Token 。 +> +> 而且为了安全性,这个token的有效期一般不会太长,给你预留五分钟、半小时的时间足够你点击它即可。 ### 2、创建临时 token