快速业务通道

使用支付宝对企业金流接口的注意事项--URL参数警报

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20

现在许多企业与组织都有网上卖东西的需求,而在线付款成为B2C的最大难题,因为银行不能能直接与 那么多企业(而且是中小企业)实施技术对接,幸好有类似支付宝这样的中间件,这个问题才得以解决,但 是在付款给支付宝时,有一个“URL参数问题”,如果处理不当,就会给粗心的接口使用者造成损失。

这样讲的意思是:如果支付宝可以更加严谨的处理或B2C企业技术人员能够严谨处理,这个损失是可以 避免的。

为了说明问题所在,先说一下支付宝接口在处理客户付款时的流程:

1.顾客浏览B2C网站并选择产品,并点击类似“支付宝支付”的按钮--2.B2C网站后台程序处理,根据 顾客所选商品金额、订单号等信息生成URL,跳转至支付宝网站--3.支付宝网站根据URL参数生成付款数额 ,用户在支付宝界面选择网银并支付给支付宝--4.支付宝收到银行款项,将款项打入B2C企业的支付宝帐 户,并主动访问B2C网站的一个页面,将付款结果以参数形式返回给该页--5.该页面接收到参数后,根据 URL MD5验证与付款状态成功字段,修改订单状态为“已付款”--6.B2C网站管理员看到“已付款”后发货 。

问题出在步骤2与步骤5。

首先说说步骤2的具体环节:B2C网站按照支付宝接口的要求,将商品金额、订单号码等参数拼接为一 个URL,并将此URL参数的MD5值做为最后一个参数(应该是支付宝那边做验证用)传递给支付宝网站,支付 宝网站根据参数中的信息生成付款项。而URL中的所有参数都是明文传递的,虽然有MD5值做校验,但无法 防止人为修改URL中的参数。攻击者完全可以在下完订单后,获得此URL并修改订单金额参数的值,并生成 新的MD5校验值,而后拼接新的URL传递给支付宝,这样一来,一张订单的应付款项就被修改了。

再来说说步骤5:B2C网站的程序员在接收到反馈后,发现付款状态为成功,就会更新整张订单状态为 “已付款”,而往往忽略了一个及其重要的事情,那就是检测用户付款数额!因为支付宝只保证某订单是 否付款成功,而并不能保证付款数额为订单额!(原因上面说的很清楚了)

解决方案:

支付宝公司改进方面:将URL参数以可逆密文形式传递,算法保密,不可对企业程序人员开放!

B2C企业方面:接收到支付宝反馈后,如果付款标志为“True”,先不要急于更新订单状态,要判断一 下付款金额是否为订单额,然后在处理

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号