API 簡易的 token 驗證?
前端是沒有任何需要登入的機制 也不需要驗證會員身份
只是我想讓 API 安全些
我如何在後端做個簡易的驗證
確認前端來的請求都是合法的?
而不能讓任何站點都可以請求這個 API(API的功能只有送前端的數據去數據庫紀錄而已)
只限於我指定的這個站點
我前端是 Vue
後端 php slim 框架
回答:
方法蛮多的,这里主要说一下简单 Token
的实现吧。
创建一个独特的 Token
生成算法:
密钥 + 时间戳 + 随机数
生成一个独特的 Token
, 用 MD5、Base64 之类的算法随便一加密(最终建议用MD5)
比如说:
md5(@MyProject{TimeStapm}$base64({RandomNumber}))
验证的时候就直接通过相同的数据来加密并检查(随机数别太大,可以遍历一下)
简而言之:一些可知的数据 + 各种的加密方法。
回答:
按你的需求: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中.
以上是 API 簡易的 token 驗證? 的全部内容, 来源链接: utcz.com/p/935654.html