2017 © Pedro Peláez
 

library sign

API签名,采用API签名,保证请求的数据正确性、保证接口安全。

image

entere/sign

API签名,采用API签名,保证请求的数据正确性、保证接口安全。

  • Friday, March 31, 2017
  • by entere
  • Repository
  • 0 Watchers
  • 7 Stars
  • 140 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 3 Forks
  • 0 Open issues
  • 4 Versions
  • 9 % Grown

The README.md

安装

安装包文件, (*1)

shell composer require "entere/sign:v1.0.0", (*2)

使用

php 实例:, (*3)


'7576762362', 'timestamp'=>'1439279383630', 'screen_name'=>'entere', 'format'=>'json' ]; $secret = 'f827182b1051075e601c73ac1ae329fa'; $result = Sign::generateSign($params,$secret); return $result; ?>

Laravel5 实例:, (*4)


'7576762362', 'timestamp'=>'1439279383630', 'screen_name'=>'entere', 'format'=>'json' ]; $secret = 'f827182b1051075e601c73ac1ae329fa'; $result = Sign::generateSign($params,$secret); return $result; } } ?>

说明

客户端与服务端的数据交互,大部分应用都采用的 RESTful API 的方式,那么如何确保 API 接口的安全性呢?URL 签名的方式可以确保请求的过程中参数不被修改。, (*5)

签名的机制是由开发者在 API 客户端计算出系列参数组合的哈希值,将产生的信息添加到 URL 请求的 sign 参数。, (*6)

例如 API 请求参数如下:, (*7)

{
    "access_key":"7576762362",
    "timestamp":"1439279383630",
    "screen_name":"entere",
    "format":"json"
}

1、按参数名进行升序排列, (*8)

access_key, timestamp, screen_name, format 其中不包括空值参数, (*9)

排序后的参数为:, (*10)

{
    "access_key":"7576762362",
    "format":"json",
    "screen_name":"entere",
    "timestamp":"1438279283630",

}

2、构造签名串, (*11)

以secret字符串开头,追加排序后参数名称和值,格式:, (*12)

secretkey1value1key2value2...

假设 secret的值为 f827182b1051075e601c73ac1ae329fa 应用到上述示例得到签名串为:, (*13)

f827182b1051075e601c73ac1ae329faaccess_key7576762362formatjsonscreen_nameenteretimestamp1438279283630

3、计算签名, (*14)

对上面的签名串进行 md5 签名:, (*15)

md5(f827182b1051075e601c73ac1ae329faaccess_key7576762362formatjsonscreen_nameenteretimestamp1438279283630)

并把值转成小写:, (*16)

927c0fc11caaf98840ed7773b348685c

4、添加签名, (*17)

将计算的签名值以 sign 参数名,附加到 URL 请求中。一个典型的 API 请求如下所示, (*18)

https://xxx.com/xxx?access_key=7576762362&format=json&screen_name=entere&timestamp=1438279283630&sign=927c0fc11caaf98840ed7773b348685c

5、服务器验证, (*19)

验证请求者的身份:简单判断 access_key。, (*20)

防止重放攻击:服务器端首先验证时间戳 timestamp 是否有效,比如是服务器时间戳 5 分钟之前的请求视为无效。, (*21)

保护传输中的数据:服务端收到请求时,将基于相同签名方法(去掉 sign 参数)重新计算哈希,并将其与请求中包括的哈希值进行匹配。如果哈希值不匹配,服务器将返回 401(未授权被拒绝)错误码。, (*22)

License

MIT, (*23)

The Versions

31/03 2017

dev-master

9999999-dev

API签名,采用API签名,保证请求的数据正确性、保证接口安全。

  Sources   Download

MIT

The Requires

  • php >=5.4

 

by Avatar entere

sign api签名 api安全

31/03 2017

v1.0.0

1.0.0.0

API签名,采用API签名,保证请求的数据正确性、保证接口安全。

  Sources   Download

MIT

The Requires

  • php >=5.4

 

by Avatar entere

sign api签名 api安全

31/03 2017

dev-develop

dev-develop

API签名,采用API签名,保证请求的数据正确性、保证接口安全。

  Sources   Download

MIT

The Requires

  • php >=5.4

 

by Avatar entere

sign api签名 api安全

29/03 2017

v0.0.1

0.0.1.0

  Sources   Download

MIT

The Requires

  • php >=5.4

 

by Avatar entere