zoukankan      html  css  js  c++  java
  • 网络安全从入门到精通(第八章-5) 支付漏洞

    本文内容:

    • 快捷支付原理
    • 常见支付漏洞
    • 支付漏洞如何挖掘
    • 防御方法

    1,快捷支付原理:

      商户网站接入支付结果又两种方式:

        一、通过浏览器进行跳转通知:

          基于用户访问的浏览器,如果用户在银行页面支付成功后,直接关闭了页面,并未等待银行跳转到支付结果页面,那么商户网站就收不到支付结果的通知,导致支付结果难以处理,而且浏览器端数据很容易被篡改而降低安全性。

        二、服务器端异步通知:

          该方式是支付公司服务器后台直接向用户指定的异步通知URL发送参数,

          采用POST或GET的方式,商户网站接受异步参数的URL对应的程序中,要支付公司返回的支付结果进行签名验证,

          成功后进行支付逻辑处理,如验证金额,订单信息是否与发起支付的一致,验证正常则对订单进行状态处理或为用户进行网站内入账等。      

      注意:支付漏洞并不需要代码审计。

    2,常见支付漏洞:

      1.修改支付价格:

        支付三部曲:订购、订单、付款。

        三个步骤中的随便一个进行修改价格测试,如果前面两步有验证机制,那么你可在最后一步付款时进行抓包尝试修改金额,如果没有在最后一步做好检验,那么问题就会存在。

        其修改的金额值可以尝试小数目或尝试复数。

      2.修改支付状态:

        订单状态----未完成[傻傻分不清]

        A订单--0001完成-----B订单---0002未完成

        付款时尝试把订单B的单号给订单A

      3.修改订单数量:

        一个笔1块,0支,或者没-1支,不就等于免费了吗。

      4.修改附属性质:

        比如优惠券。

      5.越权支付:

        存在user=id(123)这种传参是,尝试改改id,尝试用别人的钱包买自己的包包。

      6.无限制试用:

        比如试用的参数为2正常购买为1。

        那么我们购买参数2(试用),会发生什么呢?

    3,支付漏洞如何挖掘:

      1.找到关键的数据包:

        可能一个支付操作有三四个数据包,我们要对数据包进行挑选。

      2.分析数据包:

        支付数据包中包含有很多的敏感信息[账号、金额、余额、优惠],要尝试对数据包中的各个参数,进行分析。

      3.不要按套路出牌:

        多去想想开发者没有想到的地方。

      4.PC端尝试过,WAP端、APP也试试。

    4,防御方法:

      1.后端检查每一项值,报货支付状态。

      2.检验价格、数量参数,比如产品数量只能为正整数,并显示购买数量。

      3.与第三方支付平台价差,实际支付的金额是否与订单金额一致。

      4.支付参数进行MD5加密、解密,数字签名及验证,这个可以有效避免数据修改,重放攻击中的各种问题。

      5.金额超过阀值,进行人工审核。

  • 相关阅读:
    vue多个自定义组件动态显示
    vue弹出多个弹框,并可以拖动弹框
    localStorage和sessionStorage
    Sharepoint ListTemplateId
    SharePoint 上传文档太大 无法上传
    Stream Byte[] 转换
    C#转义字符 单引号 双引号 换行 回车 斜杠
    c#中如何获取本机用户名、MAC地址、IP地址、硬盘ID、CPU序列号、系统名称、物理内存
    SharePoint Content Type ID's
    Visual Studio Tip: Get Public Key Token for a Strong Named Assembly 添加强命名 获取强命名值
  • 原文地址:https://www.cnblogs.com/xz25/p/12748285.html
Copyright © 2011-2022 走看看