一. url请求的参数包括:timestamp,token, username,sign
1. timestamp:
时间戮
2. token:
登陆验证时,验证成功后,生成唯一的token(可以为uuid),并把token储存到缓存(redis)里 ,键为username,值为token
3. username:
用户名,保证唯一
4. sign:
规则:参数timestamp,token,username按字典排序,md5加密码(加点盐),后大写
用户登陆,验证成功后,生成sign
二. url 拦截规则,验证
1. 用户登陆,验证成功后,生成token,缓存(username->token)并返回给客户端
2. 客户端每个接口请求(除登陆接口)时,传必要的参数timestamp,token,username, sign,没传直接返回报错
3. timestamp作用:是否在有效期内,有效期可以设置10,20分钟,根据需求设定
比如说 过期时间设置为10分 服务接受到请求的当前时间戳是30,传过来的timestamp时间戳是10,30-10>10, 说明这个请求过期
4. token作用:直接与redis中的username键值 对比,如果不相等,则过期,或如果redis缓存时间过期了,也过期
5. sign作用:根据规则传过来的参数,生成sign,与传过来的sign对比。如果不相等,报错
1.Http接口安全概述:
1.1、Http接口是互联网各系统之间对接的重要方式之一,使用http接口,开发和调用都很方便,也是被大量采用的方式,它可以让不同系统之间实现数据的交换和共享,但由于http接口开放在互联网上,那么我们就需要有一定的安全措施来保证不能是随随便便就可以调用;
1.2、目前国内互联网公司主要采用两种做法实现接口的安全:
一种是以支付宝等支付公司为代表的私钥公钥签名验证机制;
一种是大量互联网企业都常采用的参数签名验证机制;
2. Http接口安全演进:
2.1.完全开放的接口(完全开放)
2.2.接口参数签名(基本安全)
2.3.接口参数签名+时效性验证(更加安全)
2.4.接口参数私钥签名公钥验签(固若金汤)
2.5.接口参数签名+Https(金钟罩)
2.6.口参数私钥签名公钥验签+Https(金钟罩)
总之:安全是相对的,只有相对的安全,没有绝对的安全!
3.Http接口安全设计及应用
3.1 接口参数私钥签名公钥验签
先来看看私钥+公钥的安全模式,这是一种更为安全的方式,它通过私钥和公钥实现接口的安全,目前互联网中主要是以支付宝
为代表的公司采用这种机制;(有很多开放平台也是采用这种机制) . 具体业务流所示:
该签名是通过4个秘钥来实现的,分别是:
客户端应用私钥 , 客户端公钥 , 服务端应用私钥 , 服务端公钥.
私钥都是用来生成签名的,公钥都是用来解密的,客户端的公钥解密客户端的私钥生成的签名,服务端的公钥解密服务端的私钥生
成的签名,相信这样解释应该会比较好理解的.
好了,下面就来看看是如何具体操作的,我的具体操作步骤:
首先,4把密钥都是通过OpenSSL工具生成,你需要先获得这个工具:官方网站:https://www.openssl.org/
介绍一下这个工具吧,OpenSSL 是一个开源的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序测试或其它目的使用;OpenSSL整个软件包大概可以分成三个主要的功能部分:SSL协议库、应用程序以及密码算法库;
原文:https://blog.csdn.net/hjl021/article/details/79286830