Python API接口认证
背景
之前写过一篇文章《简单API的实现》,这篇文章说明了通过api方式把数据传递给服务端处理,但这过程中没有认证功能,无论谁发任何内容,都一并接收,这样明显存在不安全性,这篇文章在原来的基础上,添加了接口认证功能。
接口认证方式
方式一:123456789客户端: - 通过定义密钥 - 将密钥加密发送给服务端服务端: - 服务端定义相同的密钥 - 通过相同的加密算法,得到一个值 - 把服务端加密后的值和客户端发送过来的加密的密钥进行对比缺点: - 密钥固定不变,加密后的值固定不变,易暴露,安全性低
方式二:1234567891011121314客户端: - 通过定义密钥 - 将秘钥和当前时间戳一起加密,得到一个值 - 将加密后密钥和时间戳一起发送给服务端服务端: - 服务端定义相同的密钥 - 将当前服务器端时间和发送过来的客户端时间进行对比,设置可接受的时间范围如:120s;如果服务器当前时间-发送过来的客户端>120s ,即返回false - 将服务端的密钥和客户端时间进行相同的加密算法,得到一个值 - 把服务端加密后的值和客户端发送过来的加密的密钥进行对比,是否一致优点: - 加密后的密钥每次不同,不易破解 - 设置有效时长,增加安全性缺点: - 客户端时间和服务端时间不能相差太大,如太大造成认证失败,不易排查问题,最好使用同一时钟服务器进行同步
实现
- 客户端
|
|
- 服务端
|
|
|
|