js请求php接口安全性,api接口安全策略 - 签名策略

安全概述

前面章节讲解的接口是裸露的、不安全的!使用post、get模拟可以轻松对api进行请求,最简单的攻击就可以瞬间完成近万会员的注册!

所以在进行api接口通讯的同时我们应该进行数据的验证工作!

加密原理及流程1、从服务器端获取一个唯一性的token,我们称之为 accessToken;

2、前端对accessToken进行随机性拆分及md5加密,产生签名(保存在本地存储中);

3、前端在与后端进行交互时传递签名;

4、后端接收数据是验证签名;

签名准备

1、在 commons 文件夹内创建1.1 md5.js //js md5 加密 [ 在课程内获取此 js文件 ]

1.2 sign.js // 签名函数

sign.jsvar md5 = require('./md5.js');

module.exports = {

sign : function(apiServer){

// 环境判断非uni环境不支持

if(!uni){return '...';}

// 连接服务器获取一个临时的accessToken

uni.request({

url: apiServer+'getAccessToken',

method: 'GET',

success: res => {

if(res.data.status != 'ok'){return ;}

var data = res.data.data;

// 对 accessToken 进行md5加密

var accessToken = md5.hex_md5(data.token + data.time);

// 签名 = md5(accessToekn + time) + '-' + 'accessToekn';

var sign = accessToken + '-' + data.token;

//console.log(sign);

// 记录在本地

uni.setStorage({

key:"sign",

data:sign

});

}

});

}

}

数据库DROP TABLE IF EXISTS `yuedu_access_tokens`;

CREATE TABLE `yuedu_access_tokens` (

`token` varchar(30) NOT NULL,

`time` int(11) DEFAULT NULL,

PRIMARY KEY (`token`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;

php 端代码<?php

//getAccessToken.php

namespace hsC;

class getAccessToken{

public function index(){

$db = \hsTool\db::getInstance('access_tokens');

$token = array(

'token' => uniqid(),

'time' => time()

);

$db->add($token);

exit(jsonCode('ok', $token));

}

}

使用说明

在数据提交页面提交之前进行预签名,提交数据时携带此签名!

更合理的签名保存

因为大家后端基础不一样,本课程使用数据库保存了accessToken,更好的方式是 redis 或 memcache,可以设置变量有效期并能自动失效!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值