警告正在使用由CosmoCommerce开发的Magento支付宝(Alipay)&快钱(99bill)支付插件的用户
今天在看Magento官网的免费版支付宝(Alipay)支付和快钱(99bill)支付插件,首先感谢开发者的共享精神,但发现一个严重问题,而且警告现在正使用这两个插件的用户。它们极其不安全,在后端接收支付网关的相关程序有严重安全漏洞,可以篡改订单的支付状态到已支付,实际用户并未支付。如果插件确认是下面列的版本,建议立即
停止使用。
<CosmoCommerce_Alipay> <version>0.9.1</version> </CosmoCommerce_Alipay> <CosmoCommerce_Cosmo99Bill> <version>0.9.0</version> </CosmoCommerce_Cosmo99Bill>
直觉告诉我在MAGENTO CONNECT里由CosmoCommerce写的支付网关都有问题,没有时间做进一步验证。
缺陷解释,一般我们在开发支付接口的时候有验签和解签的动作,一般用户可以理解它为加密与支付网关之间的数据。而在接收支付网关的数据时我们必须做的两步:
第一是验签,即严正这个请求数据是否由网关发出的,不然任何一个人都可以更改订单状态。
第二是去重处理,即支付网关有可能重复发送支付结果给你的网站,如果不做去重处理,已经到已完成的订单很可能又会回到处理中状态(取决于支付插件的配置—支付成功后的订单状态)。
而这两个插件的接收参数端没有对以上两点做任何的处理。结论是,任何一个人都可以修改订单状态,已经到已完成的订单又会回到处理中状态,有经过实际测试!简单到访问这个URL就可以:
https://www.somestore.com/cosmo99bill/payment/notify/?reference=100000009 http://www.somestore.com/alipay/payment/notify/?trade_status=TRADE_FINISHED&out_trade_no=100000008
我带大家看一段代码,用来解释,请打开这个文件 app/code/community/CosmoCommerce/Alipay/controllers/PaymentController.php
下面这段代码就是对应的上面的URL(http://www.somestore.com/alipay/payment/notify/?trade_status=TRADE_FINISHED&out_trade_no=100000008)
public function notifyAction() { //WEMVC:这里是获取参数代码 if ($this->getRequest()->isPost()) { $postData = $this->getRequest()->getPost(); $method = 'post'; } else if ($this->getRequest()->isGet()) { $postData = $this->getRequest()->getQuery(); $method = 'get'; } else { return; } //WEMVC:问题就在这里,开发者没有经过任何验签过程直接改了订单状态。同时也没有去重处理。 if ($postData['trade_status'] == "TRADE_FINISHED") { $order = Mage::getModel('sales/order'); $order->loadByIncrementId($postData['4']); //$order->setAlipayTradeno($postData['trade_no']); $order->setStatus(Mage_Sales_Model_Order::STATE_PROCESSING); // $order->sendNewOrderEmail(); $order->addStatusToHistory( $order->getStatus(), Mage::helper('alipay')->__('买家已付款, 等待卖家发货。')); try { $order->save(); } catch(Exception $e) { ; } } return; }


Hi, 我从阿水那里了解到你是做Magento开发的。我现在有一些Magento开发的业务,想请你出来聊一聊。有意的话,请联系我,我加你QQ了,你也可以发我邮件 zhl***@gmail.com。
你怎么不修复下这个呢?
如何修复?能否修补这个bug,是它们安全完整?
@elenson
会修复的
@jakyou
增加验签和去重代码 过段时间会分享代码出去 也可以看看MAGENTOCHINA的TENPEY插件 写得还不错
1 我不太喜欢你这个言辞,你应该帮忙建议(开源是个社区,不是我们做的一个商业产品,有问题什么问题都告诉我们,我们也会尽可能去维护)。 你知道只是警告,没办法促进开源社区进步的(这是目前国内没有开源成功的原因,大家没有拧成一个方向用力气)。当然从这篇文章我终于看到你的理由了(之前我只是到处看到你写警告)。 我们这个开源的版本的确存在这个问题,其他几个未开源接口(工商银行接口)没问题,只是因为这个接口做的很早,那个时候有两个验签方式,我们改了一次换成notify机制没有补上验签。不过目前用户没有提出问题,我们也会今天尽快进行更新这类开源接口代码。我相信这个接口帮助了很多程序员,也包括很多开店者,并不是以加害者身份站在他们身后。
2 快钱的接口我们几乎还没给出订单状态更新return url这个功能,你看到的这个action只是一个测试函数。快钱的回调也需要一些时间(我们需要把快钱官方的receive代码集成进来)。
3 我由衷感激你和另一位网友帮忙我获得宝贵反馈! 之前我还在怀疑你是网上的枪手和竞争对手的写手,看了博文以后这个疑虑打消了,的确代码和项目非常多,我很难保证这个开源的版本和其他项目的一致,你看到了问题,也给我们敲响了警钟,需求变化时候进行迁移和控制的管理要加强。
如有任何疑问可以联系我:
gongyu*****@cosmocom***e.com毛功缘
138189******已经更新,谢谢精东。 请老版本用户更新至新版本
功缘兄,
首先请原谅我用词的不当,我非常赞同你的观点。
“警告”标题,主观上是警告现在用这两个插件的用户,出于资金安全的考虑,并非加害者身份。如若我是加害者,我为何不去利用漏洞去黑店?而是公布于众、督促大家主动防范。它们确实有很大风险,希望您能理解。
最近工作比较忙,希望日后我们能够共同促进Magento在中国的发展。
精东
精东,
呵呵,好的。 祝你们做大做强。 一起把整个产业环境做好。
相信你们的实力和信念。
祝成功!
你好,由于TENPEY插件是付款的,请问是否能有MAGENTOCHINA的TENPEY插件的源码?仅供学习。