哈喽,你们好,这是我第一次发帖子,最近遇到了一些关于后端api接口的安全问题,相信很多刚开始接触前后端的人都会遇到这样的问题,如果后端写了一个数据库操作的接口供前端使用,而这些接口无论是GET请求还是POST请求都会被抓包,然后恶意的去访问你的api接口。对你的数据进行操作,而我最近就遇到了同样的问题,我思索了很久,在无意之间想出了用时间戳做验证的这种办法。
首先,我是这样想的,时间戳他是一个可以进行一个前后端都可以去进行公共去访问的,而我们在前端可以先拿到当前的事件戳,这边我用小程序的javascript做实例
var dates = new Date();
var time=''+dates.getTime()
var time2= time.substring(0,10)
var time3=time2/259.999//这里是你自己写的算法,后端需要对应的进行解密
首先我们先拿到当前的时间戳,因为后端我用的是PHP 的time()函数,而这个函数只能获取时间戳的前十位数字,所以我在js里面做了对应的截取,截取了前十位的数字,然后利用自己的算法去进行加密,当然了,我这里只是做例子,只是除了一个数字,如果想让你的加密难破解,就需要利用很多算法去进行加密。好了,我们去拿我们加密好的时间戳的前十位数字去请求一下后端
wx.request({
url: '这里填写你的后端接口',
data:{
token:time3
},
success:(res)=>{
console.log(res.data);
}
})
},
为了方便,我使用了GET请求,但是最好用POST 这里的安全问题我也不多说了。之后我们来看一下后端怎么去处理一下前端发送给后端的时间戳加密数字,后端这边我用的PHP文章来源:https://www.toymoban.com/news/detail-517458.html
public function token(){
$tk = $_GET['tk'];
if(time()-$tk*259.999==1||time()-$tk*259.999==0){
echo '程序执行的';
}else{
echo '小子拿到接口了?拿到接口有啥用能访问吗??';
}
其实也不难理解,后端拿到前端给他的token之后,之后拿时间戳-前端给的token,如果结果是0和1就代表是你前端小程序去请求的,当然,经过我反复测试,3g网 4g网 5g网,无论网速多快多慢,他们相差的也只是0 和1秒,所以我们可以在if代码块里面写我们的数据库操作了。这样就算别人知道你url参数是个时间戳,但是他不知道你的算法,也同样无法去请求你的接口。文章来源地址https://www.toymoban.com/news/detail-517458.html
到了这里,关于前后端API接口安全问题,防止抓包恶意请求的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!