深圳全飞鸿

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 287|回复: 0
打印 上一主题 下一主题

关于php的httpd处理请求头里的签名的方法,验证签名,拒绝服务的演示

[复制链接]

104

主题

171

帖子

1177

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1177
跳转到指定楼层
楼主
发表于 2023-8-23 11:44:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
未验证代码:
  1. <?php
  2. $secretKey = "your_secret_key_here";

  3. // 从请求头获取签名、时间戳和随机数
  4. $receivedSignature = $_SERVER['HTTP_X_SIGNATURE'];
  5. $receivedTimestamp = $_SERVER['HTTP_X_TIMESTAMP'];
  6. $receivedNonce = $_SERVER['HTTP_X_NONCE'];
  7. $receivedData = file_get_contents('php://input'); // 获取请求体内容

  8. // 生成本地签名
  9. $generatedSignature = hash_hmac('sha256', $receivedTimestamp . $receivedNonce . $receivedData, $secretKey);

  10. // 验证签名
  11. if ($receivedSignature === $generatedSignature) {
  12.     // 签名验证通过
  13.     // 可以继续处理请求
  14.     echo "Signature verified. Request processing...";
  15. } else {
  16.     // 签名验证失败,返回错误响应
  17.     http_response_code(401); // 设置响应状态码为 Unauthorized
  18.     echo "Signature verification failed. Unauthorized request.";
  19. }
  20. ?>
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|nagomes  

GMT+8, 2025-5-4 23:56 , Processed in 0.023873 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表