职责单一化,各司其职,后端只负责Api接口编写提供给各类不一样类型的客户端去调用,可是客户端和服务器端调用是要有权限限制的,不能任何一个客户端均可以随便调用咱们的接口(这里面的原因相信你们都知道吧,固然我就默认大家都知道),再者咱们都知道http是明文传输,被抓包可能够修改相应参数,固然若是你使用了https就相对安全了很多!php
举一个很简单的栗子,×××的接口你们都调用过吧,固然确定有没调用过的,不要紧,没有调用过的人也是能明白我接下来要讲的事情:×××会有一个sign的签名,就是思梦php上面所说的权限认证机制了thinkphp
下面思梦php给你们讲的只是其中的原理,咱们能够根据所讲知识继续扩展,完善成为你本身的一套程序。后端
主要使用的工具:thinkphp5/PHPapi
(1)首先客户端和提供服务的服务器加密方式要一致AES、MD5均可以缓存
(2)规定好参数安全
下面的程序是规定了三个参数:version(api的版本)、time(请求时间)、sign(加密好的签名)服务器
固然这些参数咱们能够根据你的实际代码业务而定,不必定设置同样,本次程序的参数是设置在header头里面进行传输,为了和body里面的业务参数区分开来,固然这里也能够不一致,根据你的业务而定ide
注意点:客户端和服务端时间不一致的问题,咱们要在服务器提供一个时间的方法来验证时间的有效性thinkphp5
接下来就是咱们在一个入口文件里面去定义一个验证的方法,保证咱们接口的安全性工具
以上就是代码的示例:
(1)首先定义了一个BaseController
(2)定义一个构造方法,触发验证机制
(3)在验证方法里面获取header信息,进行加密验证,若是第一次方法将该sign做为键值缓存起来并设置有效期,保证请求的惟一性
(4)以后判断限制请求的时间,若是超时将抛弃这次请求
固然这是在http上面作的一些操做,若是使用了https已经相对安全多了!
以上只是一个抛砖引玉,小伙伴能够本身再去完善