API 簡易的 token 驗證?
前端是沒有任何需要登入的機制 也不需要驗證會員身份
只是我想讓 API 安全些
我如何在後端做個簡易的驗證
確認前端來的請求都是合法的?
而不能讓任何站點都可以請求這個 API(API的功能只有送前端的數據去數據庫紀錄而已)
只限於我指定的這個站點
我前端是 Vue
後端 php slim 框架
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
方法蛮多的,这里主要说一下简单
Token
的实现吧。创建一个独特的
Token
生成算法:生成一个独特的
Token
, 用 MD5、Base64 之类的算法随便一加密(最终建议用MD5)比如说:
验证的时候就直接通过相同的数据来加密并检查(随机数别太大,可以遍历一下)
简而言之:一些可知的数据 + 各种的加密方法。
按你的需求:1、不用登录系统;2、不想让任何站点随意访问你的API;3、让你的API安全一下。
如果是我,我会从这些方面着手:
1、不允许跨域访问;
2、通过请求的referer来拦截“非法请求”;
3、设置请求ip的白名单;
4、请求中加一个随机参数,这个参数规则写死在后端,只有你自己知道,每次请求都带上这个参数,如果这个参数错误则请求失败。
总而言之把当前站点的特定信息(如ip 地址)+时间序列 通过特定的加密方式写在 http header里,后端验证http header来判断是否记录数据库。
你可以了解一下签名机制:例如https://blog.csdn.net/u013705...
不出现在URL中,但需要浏览器传递,可以考虑出现在请求的header部分,比如session信息就可以的,只是这要求api页面不是直接的最初页面,需要前面通过网站上的其它页面后带上session信息,这样后面就可以在api请求时进行验证吧。
上面是我的一个思路,没有验证的。
而不能讓
任何
站點都可以請求這個 API这一点是不可能做到的.
只能减少可能性. 在服务器生成一些按时间变化的参数, 放到http header中.