基于api安全性的解决处理方案
api解决用户安全主要采用两种方案:
一.使用token识别用户信息,作为识别用户的凭证
1.为什么使用token?
常规性的pc站点,使用session存储用户登录状态。
即用户登录之后,服务端会生成一段加密后的数据(session id),存储在服务器内存中,并发送给浏览器,浏览器会把这段信息存储在cookie中。
然后每次访问http请求时,会带上session id在头文件中,假如在服务器内存中存在此session id则通过认证,获取登录状态。(这个就是session原理)所以,当浏览器禁用cookie时,session是不能使用的。
回到我们主题:
为什么使用token呢
a.token是无状态协议。token直接存储于数据库,服务器上不需要存储session信息
b.客户端不需要存储cookie,防止 CSRF 通过 cookie攻击
c.token更安全,为提交数据添加签名,防止数据在传输过程中被修改
二.使用sign签名加密算法,防止别人的恶意提交修改数据
1.以下是php创建签名代码。密钥与前端约定,保证安全性。
/** * @param $paramArr 参数 * @param $appSecret 密钥 * @return string * */ private function createSign($paramArr,$appSecret){ ksort($paramArr); reset($paramArr); $sign = ""; foreach ($paramArr as $key => $val) { if($key=='user' && $val=='app')continue; if ($key != '') { $sign .= $key . '=' . $val . '&'; } } $sign = md5($sign . $appSecret); return $sign; }
2.验证签名部分。
private function check(){ if(!isset($_POST['sign']))self::error('数据校验失败',303); $sign = $_PSOT['sign']; unset($_POST['sign']); if($sign!=$this->createSign($_POST,$this->key)){ self::error('数据校验失败',303); } return true; }
浙公网安备 33010602011771号