You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HDFC支付网关金额篡改(Amount Tampering)漏洞修复方案咨询

解决HDFC支付网关的Amount Tampering(金额篡改)漏洞

这个金额篡改的问题是支付集成里的常见坑,核心原因就是你现在把敏感的金额参数直接放在前端隐藏字段里——用户完全可以通过浏览器开发者工具轻松修改这些值,支付网关自然会判定为高风险。下面是具体的解决步骤,都是HDFC这类网关通用的安全方案:

1. 后端生成专属签名(Signature)

绝对不要在前端硬编码或处理金额、订单号这类敏感参数,所有关键值都要在后端生成,同时按照HDFC网关要求的规则生成签名:

  • 首先把网关要求的参数(比如商户ID、金额、订单参考号、你的商户密钥)按指定顺序拼接成字符串(比如商户ID|金额|参考号|密钥,具体顺序看HDFC官方文档)
  • 用网关指定的哈希算法(一般是SHA256或MD5)对这个拼接字符串加密,生成唯一的签名
  • 伪代码示例(Python):
    import hashlib
    
    # 从后端配置里读取敏感信息(绝对不能暴露给前端)
    MERCHANT_ID = "你的HDFC商户ID"
    SECRET_KEY = "你的HDFC商户密钥"
    amount = "500"  # 从你的订单系统里获取真实金额,不要硬编码
    reference_no = "500"  # 对应你的订单号
    
    # 严格按照网关要求的参数顺序拼接
    signature_raw = f"{MERCHANT_ID}|{amount}|{reference_no}|{SECRET_KEY}"
    # 生成签名
    signature = hashlib.sha256(signature_raw.encode()).hexdigest()
    

2. 前端表单由后端渲染,仅做提交用

把后端生成的金额、参考号、签名(还有商户ID等必填参数)渲染到前端表单里,前端只负责自动提交,不做任何参数修改:

<html>
<head>
    <title>Some title</title>
</head>
<body onLoad="document.payment.submit();">
    <h3>Please wait, redirecting to process payment..</h3>
    <form action="payment_page" name="payment" method="POST">
        <input type="hidden" value="{{ amount }}" name="amount"/>
        <input type="hidden" value="{{ reference_no }}" name="reference_no"/>
        <input type="hidden" value="{{ signature }}" name="signature"/>
        <input type="hidden" value="{{ merchant_id }}" name="merchant_id"/>
        <!-- 其他HDFC要求的必填参数也从后端传入 -->
    </form>
</body>
</html>

3. 依赖网关的签名验证机制

HDFC网关在收到你的支付请求后,会用你预留的商户密钥,按照同样的规则重新计算签名,然后和你提交的签名对比:

  • 如果用户篡改了前端的金额,网关计算出的签名会和你提交的不一致,直接拒绝请求
  • 一定要严格遵循HDFC文档里的签名规则,比如参数顺序、大小写、是否包含特殊字符,这些细节错了会导致验证失败

4. 额外的安全加固

  • 绝对保密敏感密钥:商户密钥、私钥这类信息必须存在后端服务器的配置文件或环境变量里,永远不能出现在前端代码、日志或接口响应中
  • 后端预验证订单:生成支付请求前,先从你的订单系统里确认当前订单的真实金额,避免后端生成错误参数
  • 回调二次验证:支付完成后,网关会给你后端发回调通知,一定要在后端验证回调里的金额、订单号和签名,不要只相信前端的跳转结果

核心思路就是:永远不要信任前端传来的任何敏感参数,所有关键验证都在后端完成,通过签名让网关确认参数没有被篡改。

内容的提问来源于stack exchange,提问作者Lynda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:59:58