php

设计不使用oauth身份验证的安全restful api

dafenqi
2023-08-08 / 0 评论 / 12 阅读 / 正在检测是否收录...

设计不使用oauth身份验证的安全restful api

调用api的客户端程序,需要在header处发送

API_ID: 1

API_TIME: 时间戳

API_HASH: $clienthash

$user="username";

$publicKey='hello';

$privateKey= hash_hmac('sha256', $user, $publicKey); 需要先把客户端程序的privateKey存入数据库.

$data=json字符串.

$clienthash = hash_hmac('sha256', API_TIME.API_ID.$data, $privateKey);

API端验证:

$serverHash = hash_hmac('sha256', API_TIME.API_ID.$data, $privateKey);//到数据库查找此客户端的privateKey;

如果$clientHash === $serverHash 进入第二层验证

如果服务器时间和API_TIME在设定的时间段内,则验证通过.

第2种方式:

  1. 设定一个密钥比如key = ‘2323dsfadfewrasa3434'。 2. 这个key 只有发送方和接收方知道。3. 调用时,发送方,组合各个参数用密钥 key按照一定的规则(各种排序,MD5,ip等)生成一个access_key。一起post提交到API接口。4. 接收方拿到post过来的参数以及这个access_key。也和发送一样,用密钥key 对各个参数进行一样的规则(各种排序,MD5,ip等)也生成一个access_key2。5. 对比access_key 和access_key2 。一样。则允许操作,不一样,报错返回或者加入黑名单。
0

Deprecated: strtolower(): Passing null to parameter #1 ($string) of type string is deprecated in /www/wwwroot/testblog.58heshihu.com/var/Widget/Archive.php on line 1032

评论 (0)

取消