API 簡易的 token 驗證?

发布于 2022-09-13 00:28:50 字数 176 浏览 7 评论 0

前端是沒有任何需要登入的機制 也不需要驗證會員身份
只是我想讓 API 安全些
我如何在後端做個簡易的驗證
確認前端來的請求都是合法的?
而不能讓任何站點都可以請求這個 API(API的功能只有送前端的數據去數據庫紀錄而已)
只限於我指定的這個站點
我前端是 Vue
後端 php slim 框架

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

幻想少年梦 2022-09-20 00:28:50

方法蛮多的,这里主要说一下简单 Token 的实现吧。

创建一个独特的 Token 生成算法:

密钥 + 时间戳 + 随机数

生成一个独特的 Token, 用 MD5、Base64 之类的算法随便一加密(最终建议用MD5)

比如说:

md5(@MyProject{TimeStapm}$base64({RandomNumber}))

验证的时候就直接通过相同的数据来加密并检查(随机数别太大,可以遍历一下)

简而言之:一些可知的数据 + 各种的加密方法。

做个ˇ局外人 2022-09-20 00:28:50

按你的需求:1、不用登录系统;2、不想让任何站点随意访问你的API;3、让你的API安全一下。
如果是我,我会从这些方面着手:
1、不允许跨域访问;
2、通过请求的referer来拦截“非法请求”;
3、设置请求ip的白名单;
4、请求中加一个随机参数,这个参数规则写死在后端,只有你自己知道,每次请求都带上这个参数,如果这个参数错误则请求失败。

悍妇囚夫 2022-09-20 00:28:50

总而言之把当前站点的特定信息(如ip 地址)+时间序列 通过特定的加密方式写在 http header里,后端验证http header来判断是否记录数据库。

虚拟世界 2022-09-20 00:28:50

你可以了解一下签名机制:例如https://blog.csdn.net/u013705...

遥远的绿洲 2022-09-20 00:28:50

不出现在URL中,但需要浏览器传递,可以考虑出现在请求的header部分,比如session信息就可以的,只是这要求api页面不是直接的最初页面,需要前面通过网站上的其它页面后带上session信息,这样后面就可以在api请求时进行验证吧。

上面是我的一个思路,没有验证的。

离鸿 2022-09-20 00:28:50

而不能讓任何站點都可以請求這個 API
这一点是不可能做到的.
只能减少可能性. 在服务器生成一些按时间变化的参数, 放到http header中.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文