发表于: 2019-11-14 23:23:39

1 657


一、今天完成的事情:

1.学习支付业务测试---https://www.cnblogs.com/yanghj010/p/4067560.html

浅谈第三方电子支付平台测试方法的研究

第三方支付平台的功能和结构特点

       在信用方面,第三方支付平台作为中介,在网上交易的商家和消费者之间作一个信用的中转,通过改造支付流程来约束双方的行为,从而在一定程度上缓解彼此双方信用的猜疑,增加对网上购物的可信度。

       在技术层面,第三方支付平台承担安全保障和技术支持的作用,提供一系列的应用接口程序,支持多家银行的多卡种支付,将多家签约银行的支付方式整合到一个界面上,负责交易结算中心与银行的对接。银行与商家通过接入第三方支付平台实现二次结算,并采用国际先进SSL加密模式,在银行、消费者和商家之间传输和存储资料。第三方支付服务商所提供的支付系统能够承载很大的数据量、吞吐率,并具有极高的支付成功率。同时还可以根据不同用户的需要,对界面、功能进行调整,增加个性化和人性化的特征。

       目前国内出现了数百个第三方支付平台,这些平台的业务模式不尽相同,但平台的结构则具有一个相似的基本点,即第三方支付平台前端直接面对网上客户,平台的后端连接各家商业银行,或通过人民银行的相关支付系统连接各家商业银行。


第三方支付平台业务流分析

       根据电子支付产业链的分析我们看到,第三方支付最初的支付模式只是作为银行和网上商户的中介,这就是第三方支付“一般模式”;随着支付业务的发展,小商户和网民之间的信用风险导致了“提供担保”的支付模式。

       第三方支付一般模式的流程:在中国,消费者通过第三方网上支付平台进行支付一般必须涉及到发卡银行(网银)、商户和第三方网上支付平台。一个典型的消费交易,通过第三方网上支付平台支付的流程图如下:

第三方支付一般模式的流程说明:

一般支付流程如下:

1)网上消费者浏览检索商家网页,并在商家网站选择商品、下单;

2)商户网站列出可以选择的支付网关,消费者选择其一,商户网站将连接到第三方支付网关的支付页面;

3)网上消费者在第三方支付的支付页面,选择相应的银行、卡种;

4)第三方支付平台将网上消费者的支付信息,按照各银行支付网关的技术要求,传递到各相关银行,进入银行支付页面;

5)银行(银联)提供输入卡号、金额、密码等关键信息的安全页面;网上银行转发给银行账务系统,由相关银行(银联)检查相应账户(网上消费者)的支付能力,实行冻结、扣账和划账,并将账务系统的处理结果返回给网上消费者本身和第三方支付平台;

6)第三方支付平台将支付结果转发给网上用户;

7)网上商户确认收到成功支付的应答,向网上消费者发货或提供服务;

8)第三方支付平台根据协议于第二天或约定的周期向商户支付扣除手续费后的资金;第三方支付平台为网上商户提供差错交易处理的服务;

9)第三方平台作为商户与网上银行对账,核对资金;第三方平台代表网上商户与网上银行处理差错交易;

        从整个过程上来看,多家银行和签约商家通过支付网关连成通道,消费者通过第三方支付平台付款给商家,通过第三方支付为商家提供一个可以兼容多银行支付方式的接口平台。

       第三方支付担保模式的流程:第三方支付担保模式,也称为信用中介模式。该种运营模式,基本是由大型的电子交易平台独立开发或与其他投资人共同开发,凭借运营商的实力和信誉与各大银行合作,同时能够为买卖双方提供中间担保的第三方支付运营模式。这种模式的运营商主要是借助电子交易平台和中间担保支付与用户开展业务,在交易过程中采用充当信用中介的模式,保证交易的正常运行。


以支付宝支付模式为例,其具体运行流程是:

支付宝模式流程说明

1)买家确定购买之后从支付宝的个人账户中划拨出来,保留在支付监管账户中;事先用户应当保证账户中有足够的资金;如果余额不足,支付宝会自动跳转到充值页面,让客户通过网银充值;

2)支付宝扣账成功后,通知卖家发货;

3)卖家通过其配送渠道向买家发货;

4)待买家收到商品并确认无误后,通知支付宝收到货物;

5)支付宝将监管账户中资金拨到卖家在支付宝中的账户中。

支付宝作为代收代付的中介,主要是为了维护网络交易的安全性。

       在网上交易中,客户在商家网站下订单后,先把货款付给大家都信任的第三方中介机构,在商家知道自己的货款已到第三方中介机构后把货物发送给客户。如果客户对货物满意,货款就通过第三方中介机构付给商家;如果不满意,客户把货物返回给商家,并从第三方机构处取回货款。


第三方支付平台测试方法

       从上述的两种支付流程来看,作为网络交易的主要支付渠道,第三方网上支付平台在发卡银行、网上商户间提供了接口平台,在电子支付产业链中起到重要的中介作用。面对这样的电子化信息系统及其网络交易中可能存在的风险,我们不得不实时地关注:第三方支付业务的流程能否正确实现、功能是否正确、网上大量客户的并发交易会不会导致支付系统崩溃、支付系统的不稳定或者互联网诚信体系的不健全会不会影响网上购物和交易等问题。

      目前亟待解决的问题集中在:如何通过有效地方法和策略以验证第三方支付系统的功能是否正确实现,是否会造成网络拥堵及如何通过现有的网络技术如Internet Web、数据加密、防火墙技术、各种交易协议、客户端浏览技术和软件等,使得客户和商家能透明安全地进行交易等。因此,为了防范第三方支付系统的交易风险,保障系统的稳定运行,必须考虑采取强有力的措施加以管理和控制,积极地引入软件测试,强化系统质量测试和安全评估,为网络交易支付系统提供可靠地服务保证。

      根据支付系统的业务流程和发展需要,下面从系统的测试重点出发,主要讨论第三方支付系统的功能、性能及安全性的测试方法。


      功能测试方法

      在对第三方支付平台实施测试过程中,应采用黑盒测试策略,使用等价类划分、边界值分析、因果图法、判定表法、正交试验法、功能图法等测试用例设计的原理与实现,分别对第三方支付系统的功能、第三方账户和交易风险监控、系统性能及安全性等测试指标性进行测试。黑盒测试法应制订覆盖全部功能模块的测试用例,通过执行测试用例以实现系统功能、业务流程和其他质量特性的测试。

      针对第三方支付平台的业务功能,如“会员管理、账户管理、中间账户资金管理、产错处理、资金结算、对账处理、统计报表”等等,应综合应用各类测试设计方法:首先对业务流程进行等价类划分,设计的测试用例应是业务流程和流程主分支的最小集,所有的判别分支都能被覆盖,在流程覆盖的同时,完成等价功能的测试;采用边界值分析法,针对功能说明中的输入和输出,进行边界值和极限值的设计和测试;采用逆向思维方式,结合以往测试经验和直觉设计软件在功能和流程上可能存在的各种错误,靠经验用错误推测法追加一些测试用例,进行容错性测试;针对程序功能说明有各种输入条件组合的,用因果图和判定表驱动法进行测试;参数配置类的情况,用正交试验法选择较少组合方式达到最佳效果;功能图法通过不同时期条件的有效性设计数据;对于业务清晰且复杂的系统采用场景法贯穿整个测试过程。


      性能测试方法

      性能测试使用并发负载、大数据量、速度、网络故障分析及性能优化、网络应用性能监控等测试方法。在性能测试时,通过构建与真实环境相同配置、数据规模满足系统未来三年业务发展需要的压力测试环境,采用自动化测试工具模拟最终用户向服务器发起业务请求,创建压力测试脚本程序,对测试过程中系统各点进行资源监控,最后形成压力测试结果分析报告。

      采用并发性能测试方法,模拟不同数量并发用户执行关键业务,如“支付、退款、预存”等,测试系统能够承受的最大并发用户数,在进行负载操作压力测试的同时,用测试工具对数据库服务器、应用服务器、认证及授权服务器上的操作系统、数据库以及中间件等资源进行监控。

      大数据量测试主要包括单独的数据量测试及与并发性能测试相结合的综合测试。独立的数据量测试指针对系统的存储、传输、统计、查询等业务进行大数据量测试,如“余额查询、卡交易明细查询、账单批处理”等;综合数据量测试指和压力性能测试、负载性能测试、疲劳性能测试相结合的综合测试,测试数据的准备借助于测试数据管理与生成工具。

      速度测试主要检测系统关键操作的效率,例如统计报表查询等速度。通常是采用系统稳定运行情况下能够支持的最大并发用户数,持续执行一段时间业务,通过综合分析交易执行指标和资源监控指标来确定系统处理最大工作量强度性能的过程。

      网络故障分析和性能优化主要测试网络带宽、延迟、负载和TCP端口的变化是如何影响用户的响应时间。同时在系统试运行之后,对网络的应用性能监控,及时准确地了解网络上正在发生什么事情,什么应用在运行,哪些应用程序导致系统瓶颈或资源竞争等等进行分析。


      安全性测试方法

      系统安全性检测针对安全不同层面的不同内容,主要采用访谈、检查及使用安全测试工具的方法进行考查。针对系统安全不同考查点,指定相应的访谈表、检测表及测试表。从安全测评的技术层面上讲,安全技术测评主要包括网络安全、主机安全、应用安全及数据安全四方面的内容。

      网路安全主要从网络设备、网络架构以及网络安全产品等方面进行检测,如:对于防毒软件可以从防病毒的策略、管理策略、分发策略等方面进行测试与评估;也可以通过模拟不同种类的尝试性探测手段,利用系统存在的漏洞,检测系统漏洞可能造成的危害。可辅助使用网络隐患扫描工具对整个非金融机构支付服务系统网络中心执行网路设备漏洞扫描。

     主机安全主要针对主机自身安全进行相关策略的测试。例如,主机用户权限分配合理性审查;可辅助使用网络隐患扫描工具检查卡系统服务及其漏洞;日常使用记录检查,操作规范等检查。

     应用安全主要采用软件测试当中的黑盒测试方法,对涉及安全的软件功能,如:用户管理模块、权限管理模块、日志管理、加密系统、认证系统等进行测试,主要采用黑盒测试法验证上述功能是否有效,还可辅助使用页面安全测试工具进行应用系统漏洞检测。

     数据安全可以通过网络上捕获数据包的方式验证数据在传输过程中是否采用加密措施,可辅助使用嗅探测试工具执行数据包抓获;第三方支付平台的支付的接口、支付的入口、与各个银行的数据接口安全等接口检查测试等。


    小结

    通过上述对第三方支付平台的功能、支付模式及测试方法的分析,我们应尽可能的避免第三方支付系统建设的风险,为支付系统网络交易提供可靠地服务保证。通过对互联网第三方支付系统的测试,以客观、公正评估系统是否可靠和满足正常运营,是否符合人民银行对第三方电子支付平台服务系统的安全等各方面要求,保障我国电子支付系统的安全稳定运行。


2.安全性测试的重要性---http://www.blogjava.net/qileilove/archive/2013/09/27/404526.html

       二十一世纪,智能化的软件成为商业决策、推广等不可缺少的神器,很多软件涉及了客户商业上重要的资料,因此客户很关心软件的安全性。往往一个细小的安全漏洞,对客户产生的影响都是巨大的。所以我们需要尽可能的保证软件的安全性,确保软件在安全性方面能满足客户愿望。

       1)那么什么是安全性测试?

       安全性测试是指有关验证应用程序的安全等级和识别潜在安全性缺陷的过程。应用程序级安全测试的主要目的是查找软件自身设计中存在的安全隐患,并检查应用程序对非法入侵的防范,根据安全指标不同测试策略也不同。

       2)安全测试又有哪些方法和手段呢?

       目前安全测试由许多种测试手段可以进行安全测试,安全测试方法主要分为三种:

       ①静态的代码安全测试:主要通过对源代码进行安全扫描,根据程序中数据流、控制流、语义等信息与其特有软件安全规则库进行匹对,从中找出代码中潜在的安全漏洞。静态代码测试比较适用于早期的开发阶段,而不是测试阶段。

       ②动态的渗透测试:渗透测试也是常用的安全测试方法。是使用自动化工具或人工的方法模拟黑客的输入,对应用系统进行攻击性测试,从中找出运行 时刻所存在的安全漏洞。这种测试的特点就是真实有效,一般找出来的问题都是正确的,也是较为严重的。但渗透测试有一个致命的缺点是模拟的测试数据只能到达有限的测试点,覆盖率很低

      ③程序数据扫描:一个有高安全性需求的软件,在运行过程中数据是不能遭到破坏的,否则就会导致缓冲区溢出类型的攻击。数据扫描的手段通常是进行内存测试,内存测试可以发现许多诸如缓冲区溢出之类的漏洞,而这类漏洞使用除此以外的测试手段都难以发现。例如,对软件运行时的内存信息进行扫描,看是否存在一些隐患信息,当然这需要专门的工具来进行验证(比如:HP WebInspect、IBM Appscan和Acunetix Web Vulnerability Scanner)。

      3)常见的软件安全性缺陷和漏洞有哪些?

      ①SQL注入

      所谓SQL注入式攻击,就是攻击者把SQL命令插入到web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。在这些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。

     例如,登录模块开发人员可能会会这样去与数据库对比:

     select * from sys_user where user_name  = 'XXXX'

     假如我们在输入框里输入下面一句特殊字符会如何?'or' 1 = 1

     这样整个SQL语句变成

     select * from sys_user where user_name = 'XXXX' or 1 = 1

     这样就可以跳过用户名的验证,实现了入侵

     ②修改提交数据

     曾经某公司做过一个关于在线支付的商城,在安全性测试中,发现通过抓包抓到的提交价格(如使用火狐插件:live http headers),经过修改再改包可以通过,简单来说就是本来100钱买的东西,抓包修改为1元钱就可以购买。

     ③跨站脚本攻击

     XSS是如何发生的呢?假如有下面一个textbox:
  <input type="text" name="address1" value="value1from">
  value后面的值是来自用户的输入,如果用户输入
  "/><script>alert(document.cookie)</script><!-
  那么就会变成
  <input type="text" name="address1" value=""/><script>alert(document.cookie)</script><!- ">
  嵌入的JavaScript代码将会被执行
  或者用户输入的是:
  "onfocus="alert(document.cookie)
  那么就会变成
  <input type="text" name="address1" value=""onfocus="alert(document.cookie)">
  事件被触发的时候嵌入的JavaScript代码将会被执行。

       ④缓冲区溢出

       缓冲区溢出已经成为软件安全地头号公敌,许多实际中的安全问题都与它有关。造成缓存区溢出的问题通常有以下两种原因。a.设计空间的转换规则的校验问题,即缺乏对可测数据的校验,导致非法数据没有在外部输入层被检查出来并丢弃。非法数据进入接口层和实现层后,由于它超出了接口层和实现层对应测试空间或设计空间的范围,从而引起溢出。b.局部测试空间和设计空间不足。当合法数据进入后,由于程序实现层内对应的测试空间或设计空间不足,导致程序处理时出现溢出。

      ⑤加密弱点

      这几种加密弱点是不安全的,a.使用不安全的加密算法。加密算法强度不够,一些加密算法甚至可以用穷举法破解。b.加密数据时密码是由伪随机算法产生的,而产生伪随机数的方法存在缺陷,使密码很容易被破解。c.身份验证算法存在缺陷。d.客户机和服务器时钟未同步,给攻击者足够的时间来破解密码或修改数据。e.未对加密数据进行签名,导致攻击者可以篡改数据。所以,对于加密进行测试时,必须针对这些可能存在的加密弱点进行测试。

二、明天计划的事情:

1.看支付宝或淘宝写测试用例


三、遇到的问题:

1.什么是SSL加密模式? https://baike.baidu.com/item/SSL

       SSL(Secure Scokets Layer安全套接层)及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层与应用层之间对网络连接进行加密。

       SSL为Netscape所研发,用以保障在Internet上数据传输的安全,利用数据加密技术,可确保数据在网络上的传输过程中不会被截取和窃听。当前版本为3.0。它已被广泛的用于Web浏览器与服务器之间的身份认证和加密数据传输。

       SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可以分为两层:SSL记录协议(SSL Record Protocal):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密匙等。

      提供服务:

      1)认证用户和服务器,确保数据发送到正确的客户机和服务器;

      2)加密数据以防止数据中途被窃取;

      3)维护数据的完整性,确保数据在传输过程中不会被改变;

      服务器类型:Tomcat 5.x、Nginx、IIS、Apache 2.x、IBM HTTP SERVER 6.0


2.什么是差错交易?https://wiki.mbalib.com/wiki/%E4%BA%A4%E6%98%93%E5%B7%AE%E9%94%99%E9%A3%8E%E9%99%A9

什么是交易差错风险?

       交易差错风险是指由于某些人为因素而导致交易结果违背委托人的意愿,引起投资者和证券公司之间的纠纷,从而给证券公司造成经济损失。如输错客户资料、不按规定对客户的资料进行修改、资金存入和提取过程中的疏漏等。

交易差错风险的内容
       开户风险。常见的有非本人开户风险和密码管理风险。

       委托风险。主要有:接受了客户的全权委托,执行后又引起争议;委托不成功引起纠纷;由于工作人员疏忽或未按章程操作,委托单上缺乏客户的确认;缺少必要的委托凭证;缺少有效的委托证明而受理“委托人”的委托操作指令而引起代理风险。

       清算交割风险。主要有无法履行交收责任和无清算交割凭证。计算机故障或给客户做违规融资、融券都会令营业部和客户之间、营业部和交易所之间无法交收。按现行交易规则,清算交割单上客户签名为交易确认,但在实践中无清算交割凭证是券商经纪业务中最普遍的隐患之一。

  入账风险。人账风险除了一般意义上的人错账的风险外,主要是指支票资金的人账问题。由于前几年大量的法人借用个人账户操作,而这些资金绝大部分由企业账户直接划人营业部账户,然后营业部根据开户单位的指令再分别划人指定各账户。虽然主管部门三令五申,但这个问题仍未根本解决。

  提款风险。由于临柜人员审核不严及身份证普遍较难辨认等原因,造成非本人提款。从现有案例看,在本人提款问题上法院对券商比对银行要求更严。

  银证联网风险。银证联网实行实时存取是近年来发展较快的新业务,但从营业部角度看,这项业务增加了风险控制难度。

  现金风险。此类风险危害极大,主要是因为相当多的资金柜台缺乏必要的安全措施,或安全设施等级过低。

交易差错风险的表现形式

  (1)受托时因约定不明、证券经营机构审核凭证不慎而造成的风险;

  (2)证券经营机构工作人员申报差错引起的风险;

  (3)无权或越权代理而造成的风险。

  (4)交割失误引起的风险。


3.什么是缓冲区溢出?https://zh.wikipedia.org/wiki/%E7%BC%93%E5%86%B2%E5%8C%BA%E6%BA%A2%E5%87%BA

缓冲区溢出是针对程序设计缺陷,向程序输入缓冲区写入使之溢出的内容(通常是超过缓冲区能保存的最大数据量的数据),从而破坏程序运行、趁着中断之际并获取程序乃至系统的控制权。

缓冲区溢出原指当某个数据超过了处理程序限制的范围时,程序出现的异常操作,造成此现象的原因有:

  • 存在缺陷的程序设计。
  • 尤其是C语言,不像其他一些高级语言会自动进行数组或者指针的边界检查,增加溢出风险。
  • C语言中的C标准库还具有一些非常危险的操作函数,使用不当也为溢出创造条件。

黑客Unix的内核发现通过缓冲区溢出可以获得系统的最高等级权限,而成为攻击手段之一。也有人发现相同的问题也会出现在Windows操作系统上,以致其成为黑客最为常用的攻击手段,蠕虫病毒利用操作系统高危漏洞进行的破坏与大规模传播均是利用此技术。比较知名的蠕虫病毒冲击波蠕虫,就基于Windows操作系统的缓冲区溢出漏洞。

例如一个用途是对SONY的掌上游戏机PSP-3000的破解,通过特殊的溢出图片,PSP可以运行非官方的程序与游戏。同样在诺基亚智能手机操作系统Symbian OS中发现漏洞用户可以突破限制运行需要DRM权限或文件系统权限等系统权限的应用程序。

缓冲区溢出攻击从理论上来讲可以用于攻击任何有相关缺陷的程序,包括对杀毒软件防火墙等安全产品的攻击以及对银行程序的攻击。在嵌入式设备系统上也可能被利用,例如PSP智能手机等。

在部分情况下,当一般程序(除了驱动和操作系统内核)发生此类问题时,C++运行时库通常会终止程序的执行。


四、收获:

1.了解第三方支付业务的流程

2.了解了安全性测试的含义,常见缺陷和漏洞


返回列表 返回列表
评论

    分享到