首页 » PHP » 正文

使用php开发对接app的api接口的安全性问题

开发app接口的时候,经常会遇到需要表单提交的私密数据、用户信息、对数据库的insert和update等操作,此时需要确保数据安全性,这里就要用到签名signature。

例如客户端要拉取某用户资料。首先server端与客户端约定一个加密token(客户端app需要对token做相应措施确保不被反编译泄露,通过热更新也可以随时更换token),每次客户端跟server端握手的时候,客户端使用token+时间戳+接口地址的方式,进行字符串连接并进行md5或sha1加密,然后将加密字符串和userid、明文时间戳等发送的server端。

server端get到数据后,用同样的方式进行一次加密操作,并比对与客户端的signature是否匹配,若匹配则进行正常的业务流程,否则返回错误。然后对传过来的明文时间戳与服务器时间戳进行比对,确保时间差不要太大。

例如,获取用户接口为index.php?c=user&a=getinfo:

<?php
error_reporting(0);
$token=md5('mytoken');
$sign=trim($_GET['sign']);//接收signature
$apptime=trim($_GET['timestr']);//接收时间戳
$userid=trim($_GET['userid']);
$apiname='index.php?c=user&a=getinfo';
//连接参数
$secret=md5($token.$apptime.$apiname);
if ($secret == $sign) {
   //正常业务逻辑
} else {
   //返回签名错误信息
}
博主的文章或程序如果给您带来了价值,感谢您打赏一二
微信扫码支付 支付宝扫码支付

发表评论