[PHP] 内部接口简单加密验证方式
2023-02-18 15:41:35 时间
1. 当有内部系统之间进行调用的时候,也需要简单的进行一下调用方的验证,一种简单的内部接口加密验证方式.此加密方式需要三个参数,分别是api地址,pin码,entry标识,其中pin和entry是接口双方约定的两个参数.
举例说明:
service_api="/1/service"
pin="6879hsdhj4323nmn32j3jn23n44j"
entry="entadmin"
2. GET请求:
https://i.api.test.com/1/service?s2={sign}&entry={entry}&myname=taoshihan&uid=1
变量sign的生成规则如下:
api地址为 "/1/service"
args参数为 array("myname"=>'taoshihan',"uid"=>1);不包含s2和entry
method为 "GET"
pin为 "6879hsdhj4323nmn32j3jn23n44j"
makeInternalApiSign($api, $args, $method, $pin) { ksort($args); $ls = array(); foreach ($args as $k => $v) { if (is_array($v)) { $ak = sprintf('%s[]', $k); foreach ($v as $i) { $ls[] = sprintf("%s=%s", rawurlencode($ak), rawurlencode($i)); } } else { $ls[] = sprintf('%s=%s', rawurlencode($k), rawurlencode($v)); } } return hash_hmac('sha1', sprintf('%s:%s?%s', $method, $api, implode('&', $ls)), $pin); }
这个加密规则可以有效的约束接口参数数据,防止增删篡改参数,防止随意变更接口地址
相关文章
- 记一个数据库游标的实例
- .NET 使用OLEDB导入Excel数据
- 通用分页存储过程,干货无污染
- .NET如何引用System.Drawing.Drawing2D 命名空间和System.Drawing.Image及其相关概念
- .Net ADO拼接带参数的SQL语句
- 提高数据库的查询速率及其sql语句的优化问题
- 学无止境,坚持无价!
- 首款通过! 机器学习服务活体检测算法荣获CFCA权威安全认证
- Web应用怎样获取Access Token?
- HMS Core 3D流体仿真技术,打造移动端PC级流体动效
- 如何优化大场景实时渲染?HMS Core 3D Engine这么做
- 【FAQ】申请Health Kit权限的常见问题及解答
- 数据价值深度挖掘,分析服务上线“探索”能力
- 【FAQ】在华为鸿蒙车机上集成华为帐号的常见问题总结
- 如何用3D流体实现逼真水流效果?
- 如何用3D流体实现逼真水流效果?
- 汽车行业:充分借力数据价值,推动数字化营销链路闭环
- 空间音频技术与生态发展高峰论坛成功举办,业界首个Audio Vivid创作工具花瓣三维声亮相
- 【运营宝典】华为分析服务如何助力广告投放策略优化?
- HMS Core 6.8.0版本发布公告