在app(ios和Android)需要调用我的接口,我需要返回相应的数据给他,我接口端通过php实现。
技术上没什么难的,主要是接口安全问题,别人会不会通过暴露的接口抓取我的数据,这是个问题。下面介绍最常用的一种接口加密方法,非常实用和安全。
首先直接上代码,如下
/** * 核实token * @DateTime: 2017-03-08 15:55:27 * @Author: cc */ protected function checktoken($postData) { $token = $postData['token']; //加密 asort($postData); $signature_key = 'abcdefg'; $paras = ""; foreach ($postData as $key => $value) { if ($key != 'token') { $paras .= !$paras ? $key . '=' . $value : '&' . $key . '=' . $value; } } $paras .= $signature_key; $signature = md5($paras); if ($signature != $token) { return false; } else { return ture; } }
1、获取所有请求的数据postData,一般是post过来的;
2、获取其中的token对应的值(这个token就是一个md5加密串)
3、将数组按键名排序下,升降序随你,然后拼接起来,例如username=aaa&pwd=bbbb
4、将拼接起来的字符串加上一个双方约定好的加密字符串连接起来,然后md5这整个字符串,这里就是
md5(username=aaa&pwd=bbbbabcddfg)
5、最后拼接上去,username=aaa&pwd=bbbbabcddfg&token=...
调用接口那里也要这样获取token并传到接口那里,接口那里也要按照这个约定算出token,并且与post过来的token进行对比,如果不相等,则链接不合法,直接return false。
非常简单的方法,很实用也很安全。
1、测试的时候,如果你是用get方法测试,但是接口那是post,接口那里获取参数你可以写成request;
2、写成request时候要注意,除了post和get外,cookie和sessionid也会被带过去,注意参数对应问题;
3、如果出现2问题,要么用其他模拟工具,模拟成post请求,比如postman;或者把参数自己获取过来,然后拼接成一个数组,传到checktoken方法里。
通过以上的方法就可以简单、安全、高效的实现接口安全。欢迎大家补充其他方法!