浅谈银行系统对接中的安全和槽点

关注我的公众号:【编程朝花夕拾】,可获取首发内容。

01 引言

银行系统的安全级别应该是相当高的,与银行接口对接(银企直联)过程中也遭遇了平时开发中不常见的问题,甚至当时表示不理解。

前前后后对接了两家银行:招商银行和中信银行,安全要求各异,也体会到不同的安全策略也有一些槽点分享给大家。

02 业务描述

通常意义的付款都是通过第三方支付公司或者银行转账的方式完成,但是企业可能需要嵌入到业务系统中,例如财务人员通过操作业务系统的审核、审批等操作,操作的功能通过调用银行的转账接口完成转账功能,这种功能在银行系统中有一个产品叫做「银企直联」。

开通银企直连功能之后,就可以通过业务系统完成付款、退款等操作,为财务人员节省了流程。财务人员的对于钱款的进入都有严格的流程、尤其出账更是有层层审核才能真正出账。

出账入账是否成功,开发人员为了核对是否真正的成功,需要通过拉取银行流水或者查询单笔经办的交易状态来完成,支付成功后的回调或者状态回写。

业务人员为了判断用户是否付款成功而进行后续业务流程,有需要查看银行的回单。因为回单有银行的公章,是付款的有效凭证之一。

除此之外,银行的产品还有很多、如子账户、分账、现金池、以及跨境业务等。

03 前置机安全机制

银行对接的前置机(Front-End Processor, FEP)是银行业务系统中的关键组件,通常部署在银行内部网络与外部网络(如银联、第三方支付、跨行交易系统)之间,主要负责协议转换、数据安全、交易路由、流量控制等功能。

简单来说,前置机就像一个堡垒机。所有对接的请求都必须通过前置机才能到达银行。而前置机大部分外网是无法访问的。

会有哪些优势呢?

3.1 隔离性

前置机一般都是独立部署的,需要单独的机器。与复杂的业务完全隔离,即便前置机异常也不会曹成系统的不可用,前置机和业务的交互直接通过Http请求的方式交互。

3.2 可复用性

可复用性极高,因为独立部署,又采取通用的HTTP协议,只要某个系统需要使用,直接发送Http请求即可,无法再次部署。

尤其测试环境,多套测试环境的情况下,同一个账号调用同一个前置机即可,无需根据环境更新前置机。

这里的前置机更像一个中间件一样,串联着所有的系统。

3.3 复杂度

前置机不同的银行提供的方式大同小异,一般就是一个客户端,按照步骤安装即可。相比于SDK嵌入式开发来讲,避免了依赖的冲突。依赖冲突的解决是一件麻烦的事。

04 数据的加解密

数据的加密的目的就是为了避免明文传输。这也是等保的硬性要求。

中信银行采用的是Base64编码请求参数,响应的结果也需要通过Base64解码才能拿到结果。

反观招商银行对于参数的处理先是通过国密(SM4-CBC)对参数加密,再通过Base64编码,还在部分参数的基础上做了签名,防止参数被篡改。响应的结果同样需要解密才能解析。

05 槽点

对接的操作基本来源于中信银行,可能因为先对接的招商银行,相比之下中信银行的对接显的更加麻烦。

5.1 前置机的支持

这个是招商银行的前置机,既支持windows也支持linux。而中信的前置机则只支持windows系统。因为服务器基本都是Linux系统,而Window反而变的麻烦。

下面是中信的客户端操作说明:

5.2 接口方式

招商银行采用的流行的json数据传输,而中信银行采用的是传统的xml方式传输数据。xml数据的传输和获取相比json就麻烦一下。

回想一下老的系统基本都是XML的方式,比如老版金蝶系统。

相关推荐
Iqnus7 分钟前
WSL安装记录(自用)
程序员
蓁蓁啊12 分钟前
GCC 头文件搜索路径:-I vs -idirafter 深度解析
java·前端·javascript·嵌入式硬件·物联网
龙门吹雪14 分钟前
GO 语言处理多个布尔选项的实现方案
开发语言·后端·golang·布尔选项·标识位
Coder_Boy_15 分钟前
基于SpringAI的在线考试系统-核心业务流程图(续)
java·大数据·人工智能·spring boot·流程图
毕设源码-钟学长16 分钟前
【开题答辩全过程】以 基于Springboot vue肢体残疾人就业服务网站的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
ss27320 分钟前
idea中git更新项目:将传入更改合并到当前分支,在传入更改上变基当前分支
java·git·intellij-idea
不穿格子的程序员23 分钟前
从零开始写算法——二叉树篇6:二叉树的右视图 + 二叉树展开为链表
java·算法·链表
Coder_Boy_24 分钟前
基于SpringAI的在线考试系统-核心业务流程图
java·数据库·spring boot·软件工程
源代码•宸36 分钟前
Golang原理剖析(map面试与分析)
开发语言·后端·算法·面试·职场和发展·golang·map