该文章或问题已被删除

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 全局文件,仅供参考


APP前端API签名生成.zip | 141.6KB



如果发现360解压或其他软件解压,出现压缩包损坏的提示,请更用 WinRAR 解压

点赞 1      收藏 0

2 个评论

正在加载...

这里空空如也,快来补一刀!

加载更多

回答问题或评论文章请先 或者 注册