App 接口api 安全性,token签名sign的实例
当我们开发APP时,大部都是采用api 接口来获取数据或提交数据到服务器,如何保证我们的api接口的安全性,不被别人盗取我们的数据和用户登录的安全性。
1. api 采用 https 安全协议的链接,具有加密防止文明内容传输时被拦截。
2. 对api 接口采到 token签名sign 方式
两者结合的方法更安全,那要怎么实现呢?
在5+APP中源代码是暴露出来的,为了更安全的数据接口
1. 我们可以建一个全局性的JS 文件,把些重要的方法写在这个JS文件中,在打包时,选择启用原生JS混淆,对JS加密。
2. 对相关参数进行签名,再提交服务器验证
例如:APP前端, 可以设置某些参数,到时提供给服务器验证的
var data=
{
appkey:"e5962107a785772cc6c36bbc4498ac87",
appid:plus.runtime.appid, //获得本应用的APPID
devname:plus.os.name //应用类型,安卓或IOS
}
//获取sign签名, 把参考转化为网址参数字符串
function getSign(keyOptions)
{
var sign="";
var isFirst = false;
for (var key in keyOptions) {
if (!isFirst){
sign = sign +key+'='+keyOptions[key];
isFirst = true;
}else {
sign = sign + '&';
sign = sign +key+'='+ keyOptions[key];
}
}
return sign;
}
然后通过一个JS的MD5插件,把参考生成MD5签名,附件有JS MD5插件
var md5txt=md5(sign);//对所有参数进行md5签名
3. 当这些参数提交到服务器时,服务器上也要对所有参数进行MD5签名验证
例如 PHP
//做访问API接口验证//
$Appkey="e5962107a785772cc6c36bbc4498ac87";
$appid="H53C12E0E"; //本应用的APPID
$inputdata=array();
//判断客户端以什么方式提交数据,get或post
if($_SERVER['REQUEST_METHOD']=='GET')
{
foreach ($_GET as $key=>$value)
{
if($key!="sign")
{
$inputdata[$key]=urldecode($value);
}
else
{
$sign_md5=$value;
}
}
}
else //POST
{
foreach ($_POST as $key=>$value)
{
if($key!="sign")
{
$inputdata[$key]=urldecode($value);
}
else
{
$sign_md5=$value;
}
}
}
//如果没有任何参数传过来,就拒绝访问
if(empty($inputdata))
{
$error["error"]="参数不正确";
echo json_encode($error);
exit();
}
//进行MD5签名验证,如果签名不一样,拒绝访问
$signTwo=md5(http_build_query($inputdata));
if($sign_md5!=$signTwo)
{
$error["error"]="签名不一样";
echo json_encode($error);
exit();
}
//如果appkey不一样,拒绝访问
if($Appkey!=$inputdata["appkey"])
{
$error["error"]="appkey不一样";
echo json_encode($error);
exit();
}
//如果appid不一样,拒绝访问
if($appid!=$inputdata["appid"])
{
$error["error"]="appid不一样";
echo json_encode($error);
exit();
}
//如果设备不正确,拒绝访问
if($inputdata["devname"]!="Android" && $inputdata["devname"]!="IOS")
{
$error["error"]="设备不正确";
echo json_encode($error);
exit();
}
4. 关于 用户登录,如果做 token 验证,可以在服务器验证登录成功后,随机生一个 token 签名,插入到该用户的数据表中,如果要做登录时间有效性,再把登录时间一起插入到数据库中,然后再返回这个token 到客户端,客户端根据这个token是否正确,来判断用户登录的有效性。
附件有,APP前端生成MD5签名sign的实例, 主要是这个 ajax.class.js 全局文件,仅供参考
如果发现360解压或其他软件解压,出现压缩包损坏的提示,请更用 WinRAR 解压
加载更多