检验说明
为提高数据安全性,建议开发者在收到 ZEGO 服务端发出的回调时,进行本地签名计算,并与 signature 进行对比,判断该请求是否合法。
校验的使用流程如下:
1
对参数进行排序
将 callbacksecret
、timestamp
、nonce
三个参数按照字典序进行排序
2
计算 SHA1
将排序后的 callbacksecret
、timestamp
、nonce
拼接成一个字符串并进行sha1计算
3
校验 signature
将计算后的哈希字符串与 signature
进行校验对比,如果相同则标识该请求来源于 ZEGO
参数说明如下:
参数 | 说明 |
---|---|
callbacksecret | 服务端校验密钥。在 ZEGO 控制台 注册项目时生成,可在 “控制台 > 项目配置 > 项目信息 > 配置信息” 中查看。 |
timestamp | Unix 时间戳。 |
nonce | 随机数。 |
使用示例
以下示例代码用于生成和检验 signature。
// 从请求参数中获取到 signature, timestamp, nonce
$signature = $_POST["signature"];
$timestamp = $_POST["timestamp"];
$nonce = $_POST["nonce"];
$secret = callbacksecret;// 控制台获取的 callbacksecret
$tmpArr = array($secret, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature ){
return true;
} else {
return false;
}
输出示例如下:
PHP 示例
$nonce = 123412;
$timestamp = 1470820198;
$secret = 'secret';
// 三个参数经过排序后的顺序为:nonce、timestamp、secret
// 排序拼接后需要加密的原始串为:1234121470820198secret
// 哈希运算的结果为:5bd59fd62953a8059fb7eaba95720f66d19e4517