XXX小程序系统架构说明XXX:当前无现金和无卡支付成为支付常态,为有效应对市场变化,全方位提升客户业务办理便捷度,有效支持网上预约、支付、缴费、移动扫码支付等业务发展,同时为外拓营销提供更有力的金融产品,不断提升农商银行市场竞争力,XX银行计划建设XX银行XX小程序系统。一、系统基本功能小程序是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用,也体现了“用完即走”的理念,用户不用担心安装太多应用的问题。(一)XX小程序能够为客户提供网点、自助设备及农金通服务点位置信息、联系方式,同时能够为客户提供微信(支付宝)等渠道的支付功能。(二)微信(支付宝)小程序运行环境独立,基于wxml+wxss+js(视图+样式+控制)开发,开发成本低,并且很快就可以将自己的产品推向市场进行试验,如果效果不好可以马上重新对其进行改良,即便重新打造一款新的小程序也并不需要太多的时间。(三)小程序中可以逐步增加业务预约功能、金融知识、业务咨询、场景功能等,多场景聚合,多元化发展。随着互联网服务的发展,智能支付的普及,服务会逐渐从单一预约、扫码支付领域向着多元化发展,未来不论是公交支付、水电煤缴费、寻医挂号等功能都将被整合进城市服务小程序应用的范畴,逐步打造农商银行县域智慧金融系统,从线上预约,到场景支付,全面为客户提供优质高效的互联网金融服务。(四)按照《中国人民银行关于印发条码支付业务规范(试行)的通知》(银发【2017】296号)文件要求,XX银行与财付通支付(蚂蚁金融)科技有限公司(以下简称财付通)签订了《微信支付服务协议》及其补充协议。根据《微信支付服务协议的补充协议》(协议编号:T-301-WCP-20180807-03)规定,资金清算模式为:1、用户在微信小程序缴费系统付款,由用户零钱或绑定银行卡支付,款项由财付通代扣;2、财付通收到款项后转至中国银联;3、中国银联将收到款项清算到XX银行报备的内部资金户;4、XX银行内部资金户收到款项后,清算到收款商户在XX银行行开立的账户中(资金由财付通及中国银联清算到XX行内部资金户为T+1模式,即资金在财付通和中国银联总计留存一个工作日)。二、系统技术架构总体设计目标:高并发、大数据承载量、安全、稳定为最终实现目标。(一)网络架构:在安全缓冲区放置1台服务器,通过虚拟化技术为XX行提供流量转发和WEB服务。在应用及数据区放置1台服务器,通过虚拟化技术为XX行提供系统应用及数据库服务。(二)技术架构:小程序客户端采用C/S(小程序客户端—服务器)架构,管理端采用B/S架构(浏览器—服务器)。使用PHP三层体系架构:表示层:主要使用WEB-Render方式,逻辑层强大和完善,无论表现层如何定义和更改,各司其职,逻辑层都能完善地提供服务。业务逻辑层:主要针对具体问题操作,也是对数据Data层的操作,对数据业务进行逻辑处理,实现积木拼接式搭建。抽象接口层:对数据访问层抽象出接口,业务逻辑层经过抽象接口层去调用,保证调用分离,扩展分离。数据访问层:主要对原始数据进行加工和提取,为业务逻辑层提供数据服务。设计模式:单例模式、适配器模式、模版方法模式、职责链模式等(三)总体设计原则:系统架构设计原则:可靠性、健壮性、可修改性、便捷性、可测试性、效率性、标准化性、先进性、可扩展性。依据七大原则:开-闭原则(OCP)、里氏替换原则(LSP)、依赖倒转原则(DIP)、接口隔离原则(ISP)、迪米法特原则(LKP)、单一职责原则(SRP)、合成/复用聚合原则(CARP)。安全设计:信息内部传输采用MD5不可逆加密算法,涉及到金额、银行卡、结算等敏感信息系统会自动过滤恶意请求,保证用户资金安全。1、小程序架构方面。微信小程序的框架包含两部分View视图层、AppService逻辑层,View层用来渲染页面结构,AppService层用来逻辑处理、数据请求、接口调用,它们在两个线程里运行。视图层使用WebView渲染,逻辑层使用JSCore运行。视图层和逻辑层通过系统层的JSBridage进行通信,逻辑层把数据变化通知到视图层,触发视图层页面更新,视图层把触发的事件通知到逻辑层进行业务处理。为确保小程序端安全,在小程序开发设计时采取不信任不留存策略,不在本地保留敏感数据,所需数据均由post请求所得,即用即走,不储存于本地。在用户使用时,只允许用户输入我们期望的数据。例如:年龄的input中,只允许用户输入数字,而数字之外的字符都过滤掉。2、小程序后台管理方面。小程序后台管理采用php开发,选取thinkPHP框架为基础开发,框架本身具有较强的稳定性优势,在开发过程中对于数据来源更为严密的验证措施以加强系统安全性,针对安全性方面,系统设计上做了以下针对性优化(1)防止wxx攻击。对提交的任何表单采取不信任原则,验证表单来源并对表单数据进行敏感词过滤,过滤或移除特殊的Html标签,对于用户输入数据同样只允许用户输入我们期望的数据,并将重要的cookie标记为httponly,防止Javascript中的document.cookie语句就获取到cookie。(2)CSRF跨站请求伪造。CSRF是通过伪装来自受信任用户的请求来利用受信任的站点,针对于改攻击方式,系统采取对于数据请求均采用POST请求,防止GET方式会在web服务器和代理服务器日志中留下数据尾巴,使攻击者有迹可循。在对web站点授权中采取瞬时授权方法。(3)针对SQL注入。防止sql注入攻击,我们对用户输入内容均采取不信任原则,通过正则匹配对输入内容进行校验,并限制其长度,使用的sql语句采取参数化sql进行数据的查询存取,连接数据库的用户使用单独权限,有限的数据连接,对于敏感信息的存放采用多重加密方式,并且系统对于原始的异常信息进行了包装,防止错误暴露。3、小程序接口通讯方面。小程序接口通讯为加强安全,采用https协议,对数据进行加密传输及身份认证。(四)系统运行模式。小程序服务端使用php开发,采用web模块模式运行,模块模式是mod_php5模块的形式集成,此时mod_php5模块的作用是接收Apache传递过来的PHP文件请求,并处理这些请求,然后将处理后的结果返回给Apache。我们在Apache启动前在其配置文件中配置好了PHP模块(mod_php5),PHP模块通过注册apache2的ap_hook_post_config挂钩,在Apache启动的时候启动此模块以接受PHP文件的请求。(五)用户管理模式。小程序系统对于系统用户,我们采用RABC管理模式,即基于角色的用户权限管理,不同用户分属于不同的角色,不同角色拥有不同的权限。(六)文件传输模式。后台对账以及结算文件传输采用ftp传输,小程序暂未涉及文件传输,预留文件传输接口同样采用ftp传输。(七)网络安全方面。对于网络安全方面,我们采用不信任策略,即不相信表单,不相信用户,对于所有参数进行再次验证,确保其符合协议规则,并对于生成的所有sql进行敏感词(如:update,delete等)验证,防止sql注入攻击。系统采用safehtml以防止xss攻击,并在原基础上同时采取黑名单/白名单两种方法来加固安全。(八)是否为全栈开发。小程序系统从小程序开发、网页设计到服务端搭建均为全栈式开发。三、平台配置WEB服务器操作系统环境:WEB服务器数据库环境:服务器环境:四、互联网网络带宽预估XXX项目所需互联网网络带宽为10M。