恒温最下面的评论,你了解多少?

2024-03-13
来源:网络整理

很多很多个月前,当我第一次拿到我们的项目时,我看到有支付功能。 我当时很害怕。 如果有漏洞,我没发现,我们这个小公司就被挪用了好几个亿,那我的责任不是很重吗? ? 我一害怕,就来到这里提出了一个安全问题,链接:下面的评论很精彩,我也仔细看了大家的技巧。 @说的,需要静下心来慢慢学习~~现在我就扔掉了去一些安全平台扫描一下,比如腾讯的金刚审计系统; 所以这里只是简单总结一下支付逻辑(最近才看到恒温底部的评论)

1. 充值:

业务步骤:选择充值--输入充值金额--选择第三方支付方式--点击“充值”按钮--输入充值金额--调用支付接口--返回签名的预付费订单信息-- -调用SDK开始支付

这个过程中需要测试的是从“调用支付接口”到“返回签名的预付订单信息”的过程。 一个常见的问题就是拦截这个接口,把原来的大金额改成小金额,如下图:

继续,如果成功支付0.01后,充值值为我们最初输入的100,那么这里就有问题了,但是如果这样充值完成,最终成功充值值为0.01,那么这就是正确的方式来处理它。 数据应在后台进行判断,或者可以对输入值进行签名以确保准确性。 当然也可以改成0或者负数,看看后台是否已经做了判断。

2. 下订单

我们app的下单业务不像一般的电商,一个订单有两部分:数量+金额。 我们只有金额,数量默认为1,界面中不会出现这个字段。 可以像充电一样进行测试。 测试方法

3、订单支付后订单的支付状态

我给你讲一个亲身经历:我今天早上买了一张火车票,用支付宝付款。 支付完成后,当我从支付宝返回时,发现没有提示支付完成,订单界面显示我的订单尚未支付。 ,我着急了(2011年刚出来的时候,我曾经买过票,但是票没买,钱就被扣了,后来通过客服把钱退了)。 我刷新了很多次了,还是没有付款。 正当我有些焦急的时候,一条短信通知我订票成功。

这里的测试点是:很多开发者或者产品会考虑在支付后返回当前应用来调整界面以保证支付成功。 这时候很容易扣钱,但是订单没有完成。 解决办法是付款成功后使用第三方支付。 返回码决定是否支付,后台自动将订单状态更改为已支付。

当然,我们应用程序的支付系统是比较简单的。 更复杂的过程可能需要更多的测试方法。 以下是我了解到的一些付款中可能出现的小漏洞。

1、上面提到,很多需要支付的订单都是数量+金额。 如果开发没有对数量进行签名,或者后台做出判断,当我们将数量修改为像上面数量那样的负数,比如-1; 那么订单就会出错,在Dark 上这样的情况还很多,比如:

2.异常值不处理

这种情况发生的情况相对较少。 比如某个字段在客户端无法输入,但后台不做判断。 程序收到此类数据时会出错,但不对错误进行处理,导致支付被绕过。 例如, :

最后,无论怎样,一定要提醒开发者对数据进行签名或判断,否则很容易出现问题。

学习无止境,我还在学习更多的安全知识……

分享