一种去中心化应用前后端权限一致性验证方法及装置与流程

文档序号:37262027发布日期:2024-03-12 20:42阅读:28来源:国知局
一种去中心化应用前后端权限一致性验证方法及装置与流程

本技术涉及软件测试,尤其涉及一种去中心化应用前后端权限一致性验证方法及装置。


背景技术:

1、随着区块链技术的不断发展,去中心化应用(dapp)得到越来越广泛的应用,去中心化应用的前端负责展示用户界面和接收用户输入事件流,后端负责执行智能合约逻辑。在传统的应用中,前端和后端的通信主要依赖于api接口,而在基于区块链技术的去中心化应用中,智能合约为前后端交互的基础协议。

2、基于区块链的去中心化应用后端的智能合约代码是公开的,所以发起者可以通过自行构造交易请求发送到后端智能合约,而不需要通过去中心化应用的前端生成相应的交易请求。此时,如果在后端处并没有与前端对应的权限控制,而发起者自行构造的交易请求又绕过了前端的权限控制,那么该交易请求存在极大的风险。因此,去中心化应用中前端与后端权限控制的一致性是十分重要的。

3、在传统的前后端一致性测试中,由于只有前端代码公开,后端代码通常存储在服务器端没有公开,因此传统的前后端一致性验证是分别对前后端进行测试,后端只需要通过对接口进行权限控制即可以确保安全性。而去中心化应用的前后端代码均是公开的,因此无法直接将传统的前后端一致测试方法迁徙到去中心化应用场景下对智能合约的权限进行检测。


技术实现思路

1、本技术提供一种去中心化应用前后端权限一致性验证方法及装置,用以对去中心化应用前后端权限的一致性进行验证。

2、第一方面,本技术提供一种去中心化应用前后端权限一致性验证方法,该方法包括:构造去中心化应用前端的交易请求;将所述交易请求发送到所述去中心化应用前端,并获取所述去中心化应用前端执行所述交易请求的第一执行结果;在所述第一执行结果表征交易不合法时,基于所述去中心化应用前端与去中心化应用后端之间的参数匹配关系,确定所述交易请求在去中心化应用后端对应的第一智能合约交易;将所述第一智能合约交易发送到所述去中心化应用后端,并获取所述去中心化应用后端执行所述第一智能合约交易的第二执行结果;若所述第二执行结果表征交易合法时,则确定所述去中心化应用前后端权限不一致

3、上述技术方案中,将去中心化应用前端认为不合法的交易,发送到去中心化应用后端,测试后端是否可以正确实现访问控制,即测试后端是否同样认为该交易不合法。若后端的执行结果表征该交易合法时,则确定去中心化应用前后端权限不一致,可以及时发现去中心化应用中潜在的前后端权限控制不一致问题。

4、在一种可能的设计中,所述参数匹配关系中任一匹配关系为所述去中心化应用前端中交易请求的输入参数和所述去中心化应用后端中智能合约的调用参数之间的对应关系;构造去中心化应用前端的交易请求,包括:对于所述参数匹配关系中任一匹配关系,分别确定所述匹配关系中交易请求的输入参数的有效执行范围与所述匹配关系中智能合约的调用参数的有效执行范围;将在所述交易请求的输入参数的有效执行范围内,但不在所述智能合约的调用参数的有效执行范围内的参数值作为所述交易请求的输入参数的参数值,构造所述去中心化应用前端的交易请求。

5、上述技术方案中,去中心化应用中,在交易请求的输入参数的有效执行范围内,但不在智能合约的调用参数的有效执行范围内的交易请求极有可能存在前后端权限不一致的问题。本技术将交易请求的输入参数的生成范围由随机生成,缩小到前端有效执行范围在后端有效执行范围中的补集,远远缩小了交易请求的输入参数的生成范围,进而可以高效且有效地构造去中心化应用前端的交易请求。

6、在一种可能的设计中,所述方法还包括:若所述交易请求的输入参数与所述智能合约的调用参数的有效执行范围一致,则在所述有效执行范围内随机生成所述交易请求的输入参数的参数值,构造所述去中心化应用前端的交易请求。

7、上述技术方案中,若交易请求的输入参数与智能合约的调用参数的有效执行范围一致,则在该有效执行范围内,通过随机生成交易请求的输入参数的参数值,来构造去中心化应用前端的交易请求,以提高测试数据的丰富度。

8、在一种可能的设计中,所述参数匹配关系是通过如下方式得到的,包括:针对智能合约的每个函数调用,将所述函数调用中的调用参数作为污点源,将所述去中心化应用前端中的各输入参数作为污点池;执行所述去中心化应用前端的程序代码,获取与所述污点源有关的执行路径;根据所述执行路径对所述污点源进行反向污点传播分析,得到所述污点池中对所述污点源产生影响的输入参数;确定所述对所述污点源产生影响的输入参数与作为所述污点源的调用参数具有匹配关系。

9、上述技术方案中,将去中心化应用后端的函数调用中的调用参数作为污点源,将去中心化应用前端中的各输入参数作为污点池,通过反向污点传播分析,使去中心化应用前端中的各输入参数与后端的函数调用中的调用参数对应起来,为后续构造去中心化应用前端的交易请求做准备。

10、在一种可能的设计中,所述确定所述对所述污点源产生影响的输入参数与作为所述污点源的调用参数具有匹配关系之前,还包括:根据变量名命名准则,确定所述对所述污点源产生影响的输入参数的变量名,与作为所述污点源的调用参数的变量名所表征的含义相同。

11、上述技术方案中,根据变量名命名准则可知,具有相近含义的变量,其变量名往往具有很高的相似性,因此如果前端的变量和后端的变量具有匹配关系,那么它们的变量名应该具有一定的相似性。对此,本技术提出在确定对污点源产生影响的输入参数与作为污点源的调用参数具有匹配关系前,需要根据变量名命名准则,确定对污点源产生影响的输入参数的变量名,与作为污点源的调用参数的变量名所表征的含义相同,可以更精准地获得前端输入参数和后端智能合约的调用参数之间的对应关系,降低污点传播分析的误报率。

12、在一种可能的设计中,所述分别确定所述匹配关系中交易请求的输入参数的有效执行范围与所述匹配关系中智能合约的调用参数的有效执行范围,包括:基于符号执行的方式,分别在所述去中心化应用前端执行所述交易请求对应的程序代码或在所述去中心化应用后端执行所述智能合约对应的程序代码;根据所述交易请求对应的程序代码或所述智能合约对应的程序代码的执行路径中,各判断语句对所述交易请求的输入参数或对所述智能合约的调用参数的约束条件,确定所述交易请求的输入参数的有效执行范围或所述智能合约的调用参数的有效执行范围。

13、上述技术方案中,基于符号执行的方式,分别对中心化应用前端执行交易请求对应的程序代码和后端执行智能合约对应的程序代码进行分析,从而确定交易请求的输入参数的有效执行范围以及智能合约的调用参数的有效执行范围,为后续确定去中心化应用前端交易请求的输入参数的参数值做准备。

14、在一种可能的设计中,在所述去中心化应用前端执行所述交易请求对应的程序代码或在所述去中心化应用后端执行所述智能合约对应的程序代码之前,还包括:根据所述交易请求的输入参数或所述智能合约的调用参数,确定去中心化应用的应用场景;所述根据所述交易请求对应的程序代码或所述智能合约对应的程序代码的执行路径中,各判断语句对所述交易请求的输入参数或对所述智能合约的调用参数的约束条件,确定所述交易请求的输入参数的有效执行范围或所述智能合约的调用参数的有效执行范围,包括;当所述交易请求对应的程序代码或所述智能合约对应的程序代码执行到判断语句时,确定所述判断语句是否属于所述应用场景的核心代码;若是,则将所述判断语句作为所述交易请求的输入参数或所述智能合约的调用参数的一个约束条件;继续向下执行程序代码;否则,停止向下执行程序代码,返回至所述判断语句的上一层程序代码;直至程序代码执行结束,基于各自执行路径中所有的约束条件,确定所述交易请求的输入参数的有效执行范围或所述智能合约的调用参数的有效执行范围。

15、上述技术方案中,在符号执行的过程中添加去中心化应用当前的应用场景作为判断条件,将不属于当前应用场景的核心代码忽略,根据属于当前应用场景的核心代码的各约束条件,可以高效且准确地确定交易请求的输入参数的有效执行范围或智能合约的调用参数的有效执行范围,进而根据有效执行范围,确定去中心化应用前端交易请求的输入参数的参数值。

16、第二方面,本技术实施例提供一种去中心化应用前后端权限一致性验证装置,该装置包括:

17、构造模块,用于构造去中心化应用前端的交易请求;

18、处理模块,用于将所述交易请求发送到所述去中心化应用前端,并获取所述去中心化应用前端执行所述交易请求的第一执行结果;

19、所述处理模块,还用于在所述第一执行结果表征交易不合法时,基于所述去中心化应用前端与去中心化应用后端之间的参数匹配关系,确定所述交易请求在去中心化应用后端对应的第一智能合约交易;

20、验证模块,用于将所述第一智能合约交易发送到所述去中心化应用后端,并获取所述去中心化应用后端执行所述第一智能合约交易的第二执行结果;

21、所述验证模块,还用于若所述第二执行结果表征交易合法时,则确定所述去中心化应用前后端权限不一致。

22、在一种可能的设计中,所述参数匹配关系中任一匹配关系为所述去中心化应用前端中交易请求的输入参数和所述去中心化应用后端中智能合约的调用参数之间的对应关系;所述构造模块,在构造去中心化应用前端的交易请求时,具体用于对于所述参数匹配关系中任一匹配关系,分别确定所述匹配关系中交易请求的输入参数的有效执行范围与所述匹配关系中智能合约的调用参数的有效执行范围;将在所述交易请求的输入参数的有效执行范围内,但不在所述智能合约的调用参数的有效执行范围内的参数值作为所述交易请求的输入参数的参数值,构造所述去中心化应用前端的交易请求。

23、在一种可能的设计中,所述构造模块,还用于若所述交易请求的输入参数与所述智能合约的调用参数的有效执行范围一致,则在所述有效执行范围内随机生成所述交易请求的输入参数的参数值,构造所述去中心化应用前端的交易请求。

24、在一种可能的设计中,所述处理模块,还用于针对智能合约的每个函数调用,将所述函数调用中的调用参数作为污点源,将所述去中心化应用前端中的各输入参数作为污点池;执行所述去中心化应用前端的程序代码,获取与所述污点源有关的执行路径;根据所述执行路径对所述污点源进行反向污点传播分析,得到所述污点池中对所述污点源产生影响的输入参数;确定所述对所述污点源产生影响的输入参数与作为所述污点源的调用参数具有匹配关系。

25、在一种可能的设计中,所述处理模块,在确定所述对所述污点源产生影响的输入参数与作为所述污点源的调用参数具有匹配关系之前,还用于根据变量名命名准则,确定所述对所述污点源产生影响的输入参数的变量名,与作为所述污点源的调用参数的变量名所表征的含义相同。

26、在一种可能的设计中,所述构造模块,在分别确定所述匹配关系中交易请求的输入参数的有效执行范围与所述匹配关系中智能合约的调用参数的有效执行范围时,具体用于基于符号执行的方式,分别在所述去中心化应用前端执行所述交易请求对应的程序代码或在所述去中心化应用后端执行所述智能合约对应的程序代码;根据所述交易请求对应的程序代码或所述智能合约对应的程序代码的执行路径中,各判断语句对所述交易请求的输入参数或对所述智能合约的调用参数的约束条件,确定所述交易请求的输入参数的有效执行范围或所述智能合约的调用参数的有效执行范围。

27、在一种可能的设计中,所述构造模块,在所述去中心化应用前端执行所述交易请求对应的程序代码或在所述去中心化应用后端执行所述智能合约对应的程序代码之前,还用于根据所述交易请求的输入参数或所述智能合约的调用参数,确定去中心化应用的应用场景;所述构造模块,在根据所述交易请求对应的程序代码或所述智能合约对应的程序代码的执行路径中,各判断语句对所述交易请求的输入参数或对所述智能合约的调用参数的约束条件,确定所述交易请求的输入参数的有效执行范围或所述智能合约的调用参数的有效执行范围时,具体用于当所述交易请求对应的程序代码或所述智能合约对应的程序代码执行到判断语句时,确定所述判断语句是否属于所述应用场景的核心代码;若是,则将所述判断语句作为所述交易请求的输入参数或所述智能合约的调用参数的一个约束条件;继续向下执行程序代码;否则,停止向下执行程序代码,返回至所述判断语句的上一层程序代码;直至程序代码执行结束,基于各自执行路径中所有的约束条件,确定所述交易请求的输入参数的有效执行范围或所述智能合约的调用参数的有效执行范围。

28、第三方面,本技术实施例还提供一种计算设备,包括:

29、存储器,用于存储程序指令;

30、处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行如第一方面的任一种可能的设计中所述的方法。

31、第四方面,本技术实施例还提供一种计算机可读存储介质,其中存储有计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得上述第一方面的任一种可能的设计中所述的方法实现。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1