前端是沒有任何需要登入的機制 也不需要驗證會員身份
只是我想讓 API 安全些
我如何在後端做個簡易的驗證
確認前端來的請求都是合法的?
而不能讓任何站點都可以請求這個 API(API的功能只有送前端的數據去數據庫紀錄而已)
只限於我指定的這個站點
我前端是 Vue
後端 php slim 框架
前端是沒有任何需要登入的機制 也不需要驗證會員身份
只是我想讓 API 安全些
我如何在後端做個簡易的驗證
確認前端來的請求都是合法的?
而不能讓任何站點都可以請求這個 API(API的功能只有送前端的數據去數據庫紀錄而已)
只限於我指定的這個站點
我前端是 Vue
後端 php slim 框架
按你的需求:1、不用登录系统;2、不想让任何站点随意访问你的API;3、让你的API安全一下。
如果是我,我会从这些方面着手:
1、不允许跨域访问;
2、通过请求的referer来拦截“非法请求”;
3、设置请求ip的白名单;
4、请求中加一个随机参数,这个参数规则写死在后端,只有你自己知道,每次请求都带上这个参数,如果这个参数错误则请求失败。
不出现在URL中,但需要浏览器传递,可以考虑出现在请求的header部分,比如session信息就可以的,只是这要求api页面不是直接的最初页面,需要前面通过网站上的其它页面后带上session信息,这样后面就可以在api请求时进行验证吧。
上面是我的一个思路,没有验证的。
10 回答11.2k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答4.9k 阅读✓ 已解决
2 回答4.8k 阅读✓ 已解决
4 回答4.4k 阅读✓ 已解决
方法蛮多的,这里主要说一下简单
Token
的实现吧。创建一个独特的
Token
生成算法:生成一个独特的
Token
, 用 MD5、Base64 之类的算法随便一加密(最终建议用MD5)比如说:
验证的时候就直接通过相同的数据来加密并检查(随机数别太大,可以遍历一下)
简而言之:一些可知的数据 + 各种的加密方法。