PHP开发api数据接口之安全验证
应广大朋友要求,今天分享一下PHP开发数据接口时的安全验证方案。
当我们的接口发布到服务器以后,就可以被外部所请求,但是这个过程中服务器并不知道请求的来源是什么,有可能是别人非法调用我们的接口,传输的数据被偷窥、被抓包、被伪造时有发生,因此就要使用安全验证。那么如何设计一套比较安全的API接口方案呢?
一般的解决方案如下:
1、Token授权认证,防止未授权用户获取数据;
2、时间戳超时机制;
3、URL签名,防止请求参数被篡改;
4、防重放,防止接口被第二次请求,防采集;
5、采用HTTPS通信协议,防止数据明文传输;
//分配给接入方的密钥 $key = "c4ca4238a0b923820dcc509a6f75849b"; //接收传来的参数 $userId = $_REQUEST["userId"]; $userName = $_REQUEST["userName"]; $sign = $_REQUEST["sign"]; //数据包 $data = array( 'userName' => $userName, 'userId' => $userId ); // 对数组的值按key排序 ksort($data); //拼接成字符串 $params = http_build_query($data); //拼接密钥,并进行md5加密 $sign_lower = md5($params . $key); //转换为大写 $sign_server = strtoupper($sign_lower); if($sign == $sign_server){ //验证成功,返回数据 }else{ //验证失败 }
发表评论