zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    ABP文档
    ABP框架没有httpPost,httpget,httpput特性
    使用命令关闭占用80端口的程序
    nginx安装编译详解
    docker端口映射设置
    centos6.3安装nginx
    process有个env属性,env属性就是环境变量,里面可以访问到NODE_ENV;NODE_ENV是在启动nodejs时添加上去的;
    使用nssm在windows服务器上部署nodejs
    对象相等与不相等
    可用的CSS文字两端对齐
  • 原文地址:https://www.cnblogs.com/finalanddistance/p/9672945.html
Copyright © 2011-2022 走看看