当前位置: 首页 > news >正文

成都地铁建设分公司网站网站ps照片怎么做的

成都地铁建设分公司网站,网站ps照片怎么做的,网站建设有什么作用,内容网站文章目录 签名生成说明签名生成示例代码签名校验示例代码 签名生成说明 B项目需要调用A项目的接口#xff0c;由A项目为B项目分配 AccessKey 和 SecretKey#xff0c;用于接口加密#xff0c;确保不易被穷举#xff0c;生成算法不易被猜测。 最终需要确保包含签名的参数只… 文章目录 签名生成说明签名生成示例代码签名校验示例代码 签名生成说明 B项目需要调用A项目的接口由A项目为B项目分配 AccessKey 和 SecretKey用于接口加密确保不易被穷举生成算法不易被猜测。 最终需要确保包含签名的参数只能被有效的请求一次重复请求则视为无效参数并且设定参数有效时长例如5分钟超时则视为无效参数。 AccessKey 和 SecretKey分配 测试环境 ACCESS_KEY test_access SECRET_KEY test_secret正式环境另行配置假设A项目和B项目通过json格式传递参数在PHP中对请求的json参数转化为数组然后对原本的请求参数追加如下字段值 AccessKey已分配的请求key固定值timestamp当前毫秒时间戳nonce唯一随机10位字符串15分钟内不允许重复 例如原本的请求参数 $params 为 Array ([ToUserName] wxdd5624bd15b1691a[FromUserName] sys[CreateTime] 1717554600[MsgType] event[Event] sys_approval_change[AgentID] 1000043 )对 $params 追加 AccessKey 和 timestamp 和 nonce 之后 Array ([ToUserName] wxdd5624bd15b1691a[FromUserName] sys[CreateTime] 1717554600[MsgType] event[Event] sys_approval_change[AgentID] 1000043[AccessKey] test_access[timestamp] 1717659814771[nonce] 6bc6f34969 )将 $params 的 key 值按照字母升序排列PHP中的 ksort 函数 Array ([AccessKey] test_access[AgentID] 1000043[CreateTime] 1717554600[Event] sys_approval_change[FromUserName] sys[MsgType] event[ToUserName] wxdd5624bd15b1691a[nonce] 756c577626[timestamp] 1717659831355 )然后将上述参数赋给一个临时的变量例如$tmp_params并且拼接 SecretKey然后整体json_encode再次md5之后得到sign值代码如下 $sign md5(json_encode($tmp_params, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));将 sign值 追加到 $params 参数中注意是$params参数不是 $tmp_params 最终参数如下 Array ([AccessKey] test_access[AgentID] 1000043[CreateTime] 1717554600[Event] sys_approval_change[FromUserName] sys[MsgType] event[ToUserName] wxdd5624bd15b1691a[nonce] 137c128684[timestamp] 1717660145228[sign] ff0ea47d561eb2d9735771f0bc85ad33 )将上述参数转化为json后作为最终的请求参数 {AccessKey: test_access,AgentID: 1000043,CreateTime: 1717554600,Event: sys_approval_change,FromUserName: sys,MsgType: event,ToUserName: wxdd5624bd15b1691a,nonce: fb212b7327,timestamp: 1717660335729,sign: 9e5321b10ddc975b89a228e94d8e5f04 }签名生成示例代码 public function createSign() {$mock_json {ToUserName: wxdd5624bd15b1691a,FromUserName: sys,CreateTime: 1717554600,MsgType: event,Event: sys_approval_change,AgentID: 1000043};$params json_decode($mock_json, true);//对原本的请求参数追加如下字段值$params[AccessKey] test_access; //已分配的请求key固定值$params[timestamp] intval(microtime(true) * 1000); //当前毫秒时间戳$params[nonce] substr(uniqid(), -6) . rand(1000, 9999); //唯一随机10位字符串15分钟内不允许重复//按照上述所有请求参数的key值的字母升序排列PHP中的 ksort 函数ksort($params);//然后将上述参数赋给一个临时的变量并且拼接 SecretKey, 然后整体json_encode再次md5之后得到sign值$tmp_params $params;$tmp_params[SecretKey] test_secret;$sign md5(json_encode($tmp_params, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));//将 sign值 追加到 $params 参数中注意是$params参数不是 $tmp_params $params[sign] $sign;//将上述参数转化为json后作为最终的请求参数echo json_encode($params, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); }签名校验示例代码 ?phpclass Demo {//时间常量const TIME_OUT 300; //超时时间 5分钟const NONCE_INTERVAL 900; //允许nonce时间间隔 15分钟/*** 签名验证* param $params array 客户端请求来的原本的参数数组* return array* throws \Exception*/public function checkSign($params){$request_params $params;if (empty($params[timestamp]) || empty($params[nonce]) || empty($params[sign])) {throw new \Exception(签名基础参数校验失败, 201);}//校验超时$timestamp intval($params[timestamp] / 1000);if (abs(time() - $timestamp) self::TIME_OUT) {throw new \Exception(请求参数已超时, 201);}//从配置文件中读取ACCESS_KEY和SECRET_KEY$access_key env(ACCESS_KEY);$secret_key env(SECRET_KEY);if (empty($access_key) || empty($secret_key)) {throw new \Exception(NEW_CRM_REQUEST配置异常, 201);}if ($access_key ! $params[AccessKey]) {throw new \Exception(无效的AccessKey, 201);}$nonce_key test_nonce: . $params[timestamp] . _ . $params[nonce];$exist_nonce RedisUtils::init()-get($nonce_key);if ($exist_nonce) {throw new \Exception(无效的nonce值, 201);}$sign $params[sign];unset($params[sign]);ksort($params);$params[SecretKey] $secret_key;$params_json json_encode($params, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);$params_sign md5($params_json);if ($params_sign ! $sign) {//todo 写入错误log 或 发送报警信息//todo 校验频繁请求失败的IP可以考虑将这些IP加入黑名单throw new \Exception(签名校验失败, 201);}RedisUtils::init()-set($nonce_key, 1, self::NONCE_INTERVAL);unset($params[AccessKey]);unset($params[SecretKey]);unset($params[nonce]);unset($params[timestamp]);return $params;} }最终效果同样的请求参数如果被抓包再次请求就会失败
http://www.tj-hxxt.cn/news/140145.html

相关文章:

  • 电商网站开发环境网站建设营销一站式服务
  • 网站模板为什么不好怎么防止网站攻击
  • app产品网站模板北京新冠确诊最新数据
  • 网站免费php模板自助建网站的平台 数据库
  • 商场网站建设公司怎么做微信点击网站打赏看片
  • 盐城个人网站建设装修网站建设方案书
  • 软件开发网站建设wordpress controls
  • 建设企业网站的具体步骤wordpress feed 地址
  • 广告网站建设实训报告dw建网站
  • 医疗网站建设信息做购物网站安全吗
  • nodejs做视频网站coding免费搭建wordpress
  • 网站后台发布了但看不见做视频的网站带模板
  • 厦门网站制作收费帮人做彩票网站支付接口
  • 酒店预订网站模板网站制作难不难
  • 公司网站建设多少钱网站建设的一些销售技巧
  • 南京营销型网站建设公司丹东网站优化
  • 免费给人做网站的签订网站建设合同
  • 冀州市网站建设台州建站服务
  • 做网站的工作记录网站内容建设 内容审核流程
  • 绍兴柯桥建设局网站网站开发项目业务要求
  • php网站制作软件网站开发课程知识点总结
  • 建设网站的请示网盟推广图片
  • 涿州网站网站建设mvc5网站开发之六 管理员
  • 网站有情链接怎么做关于做网站ppt
  • 15 企业网站优化方案有哪些内容wordpress 梦月酱
  • 微信商城网站建设视频点击图片跳转到网站怎么做链接
  • 做百度手机网站点击软织梦网站模板免费下载
  • 市面上做网站多少钱响应式官方网站
  • 《网站建设》期末考试湖北网站设计
  • 网站优化专家做网站推广有什么升职空间