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

简介:

 现在许多企业与组织都有网上卖东西的需求,而在线付款成为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”,先不要急于更新订单状态,要判断一下付款金额是否为订单额,然后在处理。


本文转自Aicken(李鸣)博客园博客,原文链接:http://www.cnblogs.com/isline/archive/2009/02/27/1399411.html,如需转载请自行联系原作者

相关文章
|
2月前
|
存储 前端开发 Java
SpringBoot使用云端资源url下载文件的接口写法
在Spring Boot中实现从云端资源URL下载文件的功能可通过定义REST接口完成。示例代码展示了一个`FileDownloadController`,它包含使用`@GetMapping`注解的方法`downloadFile`,此方法接收URL参数,利用`RestTemplate`下载文件,并将文件字节数组封装为`ByteArrayResource`返回给客户端。此外,通过设置HTTP响应头,确保文件以附件形式下载。这种方法适用于从AWS S3或Google Cloud Storage等云服务下载文件。
268 7
|
1月前
|
开发框架 前端开发 .NET
Asp.net Webapi 的 Post 方法不能把参数加到 URL 中?试试这样写
Asp.net Webapi 的 Post 方法不能把参数加到 URL 中?试试这样写
|
1月前
|
Java
JAVA 获取 URL 指定参数的值
JAVA 获取 URL 指定参数的值
32 0
|
2月前
|
算法 安全 API
淘宝获得淘口令真实URL接口的技术解析
淘口令是淘宝的加密链接,用于商品推广。官方未提供直接解密API,但第三方工具或API能模拟解析。示例代码展示了如何通过第三方接口(需替换为真实接口)获取淘口令所对应的URL、标题和图片信息,但使用时需注意安全风险。
|
3月前
|
前端开发 Java 开发者
在Spring框架中,`PathMatcher`是用于进行URL路径匹配的接口
在Spring框架中,`PathMatcher`是用于进行URL路径匹配的接口
85 6
|
2月前
|
JavaScript 前端开发 数据格式
URL编码【详解】——Javascript对URL进行编码解码的三种方式的区别和使用场景,axios请求拦截器中对get请求的参数全部进行URL编码
URL编码【详解】——Javascript对URL进行编码解码的三种方式的区别和使用场景,axios请求拦截器中对get请求的参数全部进行URL编码
69 0
|
2月前
|
JavaScript
js 获取并解析 url 中参数的三种方法
js 获取并解析 url 中参数的三种方法
36 0
|
3月前
|
文字识别 算法 API
视觉智能开放平台产品使用合集之在调用接口传入的图片URL参数,文件在本地或者非上海地域OSS链接,该怎么办
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
|
3月前
|
监控 druid Java
Springboot用JUnit测试接口时报错Failed to determine a suitable driver class configure a DataSource: ‘url‘
Springboot用JUnit测试接口时报错Failed to determine a suitable driver class configure a DataSource: ‘url‘
73 0
|
4月前
uView queryParams 对象转URL参数
uView queryParams 对象转URL参数
52 0