技术饭

thinkphp开发api接口安全验证解析

copylian    0 评论    21905 浏览    2017.05.10

thinkphp开发api接口安全验证解析,对于php后端很多时候要开发接口提供给安卓或者IOS使用,那这时候接口的安全验证机制就是一个必要的限制机制了,不然的话,其他人可以随便调用你的接口,这个会造成不可预料的后果。

在实际工作中,使用PHP写api接口是经常做的,PHP写好接口后,前台就可以通过链接获取接口提供的数据,而返回的数据一般分为两种情况,xml和json,在这个过程中,服务器并不知道,请求的来源是什么,有可能是别人非法调用我们的接口,获取数据,因此就要使用安全验证。

thinkphp开发api接口安全验证解析

这个必须要做,隐藏在app里的接口如果没有认证,现在hack app的人这么多,很快就会被人发现,用来直接操作数据库

直观总结方法二:

1、请求头里带用户username和password,到服务器端做验证,通过才继续下边业务逻辑。

优点:防止了服务器端api被随意调用。

缺点:每次都交互用户名和密码,交互量大,且密码明文传输不安全。

2、第一次请求,要求username和password,验证通过,种cookie到客户端,app保存cookie值。

每次请求带上cookie和pc上浏览器认证的原理一样了。

以上两点,只有注册用户,才能有权访问业务逻辑,而app有大量的不需要注册数据api

3、制定一个token生成规则,按某些服务器端和客户端都拥有的共同属性生成一个随机串,客户端生成这个串,服务器收到请求也校验这个串。

缺点:随机串生成规则要保密。

比如:一个使用PHP框架的工程,框架每次交互都会有 module和action两个参数做路由,这样的话,我就可以用下边这个规则来生成token

app要请求用户列表,api是“index.php?module=user&action=list”

app生成token = md5sum ('user'.'2012-11-28'.'#$@%!'.list) = 880fed4ca2aabd20ae9a5dd774711de2

实际发起请求为 “index.php?module=user&action=list&token=880fed4ca2aabd20ae9a5dd774711de2”

服务器端接到请求用同样方法计算token,

<?php

          $module = $_GET['module'];

          $action = $_GET['action'];

          $token = md5sum($module.date('Y-m-d',time()).'#$@%!*'.$action);

          if($token != $_GET['token']){

                json_decode($data);

                exit();

          }

?>

参考资料:

PHP开发api接口安全验证(推荐)

thinkphp在app接口开发过程中的通讯安全认证

php开发接口的安全认证方法总结

thinkphp在app接口开发过程中的通讯数据的封装

只袄早~~~
感谢你的支持,我会继续努力!
扫码打赏,感谢您的支持!

文明上网理性发言!

  • 还没有评论,沙发等你来抢