• API:Sign签名的执行流程


      Sign签名存在目的:为了防止不法分子修改参数数据,进而攻击服务器,导致数据泄露或从中获得利益

                例如:一个接口是用户把积分转帐给他的朋友,修改后,变为转帐到攻击者的帐户,这样,攻击者就能得到利益啦

      Sign执行流程:

      客户端:当客户请求服务器前,会定义请求参数,通过这些参数,会生成一个Sign签名,生成签名之后,和参数一起放进请求头里,传给服务器;

      服务器:接收到传过来的请求数据,先通过传来的参数,生成相应的Sign签名,之后与客户端传来的Sign签名进行一个比对(因为两者的参数一致,调用的生成签名函数一致,那么最后的Sign也会一致),

          如果两个Sign签名一致。通过验证允许访问服务器数据,否则禁止访问。

      签名的参数里面,需要包含 channel_secret !!

      原因:

      如果没有加上channel_secret ,攻击者只要知道 签名生成函数 ,就可以不被服务器发现之下修改数据;

      1. 因为 SDK是公开给 客户端开发者下载的,所以签名生成函数 很容易就能被攻击者知道。    

      2. 如果一个安全措施里面,生成函数需要保密才能安全,在现代密码学的理解来说,这个安全措施并不够安全。

        加上channel_secret 后,攻击者不但要知道 签名生成函数,还需要知道channel_secret,才能够修改数据。这样数据就安全了。

      什么是channel_secret :

      channel_secret 就是每个 channel 也拥有的一个 key,

      一般在客户端申请一个新的 channel 时,服务器新增 channel 后生成 channel_secret,没有意外情况下(例如 开发者丢失了 channel_secret ),就只会生成一次并且没有时间有效期,然后告诉客户端;

      而key 是 密码学中 不能被公开、被攻击者知道的东西。而只要key 不被知道,即使其他代码被人知道,系统仍能安全;

     

      以上

      END

  • 相关阅读:
    leetcode——448.找到所有数组中消失的数字
    leetcode——268.缺失数字
    leetcode——680.验证回文字符串2
    leetcode——125.验证回文串
    leetcode——217.存在重复元素
    leetcode——189.旋转数组
    02-04 线性回归
    02-03 感知机对偶形式(鸢尾花分类)
    02-02 感知机原始形式(鸢尾花分类)
    02-01 感知机
  • 原文地址:https://www.cnblogs.com/finalanddistance/p/9672945.html
Copyright © 2020-2023  润新知