基于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;
    }

 

posted on 2016-08-25 12:09  夙夜AA  阅读(293)  评论(0)    收藏  举报