博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
你的api加锁了吗?
阅读量:7092 次
发布时间:2019-06-28

本文共 845 字,大约阅读时间需要 2 分钟。

职责单一化,各司其职,后端只负责Api接口编写提供给各种不同类型的客户端去调用,但是客户端和服务器端调用是要有权限限制的,不能任何一个客户端都可以随便调用我们的接口(这里面的缘由相信大家都知道吧,当然我就默认你们都知道),再者我们都知道http是明文传输,被抓包可可以修改相应参数,当然如果你使用了https就相对安全了不少!

v2-a4ecbca73779ce548f8862ff9736cdb9_hd.j

  举一个很简单的栗子,微信的接口大家都调用过吧,当然肯定有没调用过的,没关系,没有调用过的人也是能明白我接下来要讲的事情:微信会有一个sign的签名,就是思梦php上面所说的权限认证机制了

  下面思梦php给大家讲的只是其中的原理,我们可以根据所讲知识继续扩展,完善成为你自己的一套程序。

  主要使用的工具:thinkphp5/PHP

  (1)首先客户端和提供服务的服务器加密方式要一致AES、MD5都可以

  (2)规定好参数

  下面的程序是规定了三个参数:version(api的版本)、time(请求时间)、sign(加密好的签名)

  当然这些参数我们可以根据你的实际代码业务而定,不一定设置一样,本次程序的参数是设置在header头里面进行传输,为了和body里面的业务参数区分开来,当然这里也可以不一致,根据你的业务而定

  注意点:客户端和服务端时间不一致的问题,我们要在服务器提供一个时间的方法来验证时间的有效性

v2-b3818588d89b85b29a99773745160778_hd.j

  接下来就是我们在一个入口文件里面去定义一个验证的方法,保证我们接口的安全性

v2-e89cb49fbf2fd50790dc1e7cbe6ba15a_hd.j

v2-90d66dc3f32e99e4eb354a7f67b8d327_hd.j

  以上就是代码的示例:

  (1)首先定义了一个BaseController

  (2)定义一个构造方法,触发验证机制

  (3)在验证方法里面获取header信息,进行加密验证,如果第一次方法将该sign作为键值缓存起来并设置有效期,保证请求的唯一性

  (4)之后判断限制请求的时间,如果超时将抛弃此次请求

  当然这是在http上面做的一些操作,如果使用了https已经相对安全多了!

  以上只是一个抛砖引玉,小伙伴可以自己再去完善

转载地址:http://dqiql.baihongyu.com/

你可能感兴趣的文章
通过自定义类加载器进行动态编译与动态实现接口
查看>>
ecmall后台拿Shell
查看>>
ISIS—BGP—VRRP 城域网典型架构图 拓扑实验
查看>>
浅谈oracle中row_number() over()分析函数用法
查看>>
jqGrid细节备注—jqGrid中获取subGrid的标题栏对象
查看>>
我给淘宝孙彤宇下的两个套和敬佩他的四个理由
查看>>
freemarker快速上手+空值的多种处理方法
查看>>
详解AJAX核心中的XMLHttpRequest对象
查看>>
由一幅漫画想到的
查看>>
利用SQL SERVER 2005数据库镜像实现可用性
查看>>
化堵为通 打破运维瓶颈
查看>>
SQL Server 2008备份策略设计下(六)
查看>>
微软桌面虚拟化所需产品及RemoteFX要求介绍
查看>>
OpenOffice介绍
查看>>
WindowsServer2008下的Oracle群集配置
查看>>
IT人必读:写给浮躁的IT同仁(请不要做浮躁的人)
查看>>
剑破冰山—Oracle开发艺术 目录
查看>>
Elastalert-基于Elasticsearch层面的监控告警框架
查看>>
蓝屏代码为0x00000051的解决方案
查看>>
Java线程:深入ThreadLocal
查看>>