python flask 接口签名sign原理及代码实

接口签名sign原理及代码实现

觉得废话多的话,可以直接看代码

作用

防止有人不停的刷接口,对接口做限制

比如说,登录接口,按道理说,应该只有app会请求这个接口
但是,如果有人抓取app的请求,就会得到登录接口的地址和请求参数
如果他写了个脚本,不断的访问登录接口,去测登录名密码,那么有些有些用户的密码策略过于简单,是很容易被试出来的

所以,接口签名就是专门用来限制这个的,只有app(自己人)才能通过校验

原理

1.服务器和app,各自存储一个相同的秘钥
2.app请求时,把传的参数用秘钥进行加密,生成一个sign签名,一同传递过去
3.服务器接到请求后,也会对传递的参数进行加密,也生成一个sign签名,拿服务器生成的sign和接口请求的sing比对一下,如果相同,那么就可以证明,是自己人请求的,就予以放行

因为这个秘钥,只有自己人才会有,同样的秘钥生成的sign签名,肯定是一模一样的
这个秘钥,一般是开发的时候,线下给到app开发,集成编译到app里面的

问题

举例,app和服务器,各自保存了一个秘钥,进行签名验证
1.app请求登录接口,账号名为abcd,密码为123456,
2.app对账户名和密码用秘钥加密生成签名,去请求登录接口
3.服务器收到请求,对账号名和密码也用秘钥加密生成签名,对比发现签名一致,然后予以通过
4.请求成功

问题1

但是,如果下次app还去请求登录的时候,生成的签名,是不是还是一模一样?
因为都是对账号和密码加密生成签名,那么只要账号和密码不变,那么生成的签名肯定是一模一样的

那如果坏人直接抓包拿到签名、账号和密码,是不是他也可以仿造登录请求,要知道,服务器只接受请求,他是分辨不出来的

所以,即使是相同的账号和密码,也要保证,每次的签名都不一致

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值