发布信息

前端代码处理方法及装置与流程

作者:admin      2022-07-30 08:29:36     424



电子通信装置的制造及其应用技术1.本公开涉及前端技术领域,尤其涉及前端代码处理方法及装置。背景技术:2.由于前端代码在客户端的浏览器中执行,属于公开状态,任何人都可以通过浏览器的开发者工具拿到前端代码,从而导致前端代码中包含的任何私密信息都有可能泄露出去,因此某些场景下需要在前端采用加密以提升数据的安全性。出于安全和性能的平衡,业界通常采用aes(advanced encryption standard,高级加密标准)加密算法,但是如何提升aes密钥的安全性,是保证前端加密安全的重点。业界通常有如下方式:3.通过接口请求从服务端获取密钥。这种方式的本质是将密钥存储的服务端,需要的时候从服务端获取。该方式的优点是保证了密钥存储的安全性,同时每次获取密钥时,服务端可生成新的密钥进行下发,保证密钥随时更新。但是缺点也很明显,首先服务端存储虽然保证了密钥存储的安全性,但在密钥传输过程中依然有泄露风险。攻击者通过浏览器的开发者调试工具,可以轻松的获取接口下发的密钥。其次从服务端获取密钥会阻塞加密过程,客户端必须等待接口下发成功以后才能进行加密,在很多时效性要求较高场景下,会降低页面的响应速度,影响用户体验。4.将密钥存储在本地客户端缓存中,例如cookie(储存在用户本地终端上的数据),localstorage(本地存储)等。这种方式的优点是不会阻塞加密流程,随用随取。但是缺点也比较明显,攻击者可以比较容易的从缓存中获取密钥,并且更新密钥也会比较麻烦,需要修改客户端代码,重新发布。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.以预设方式将混淆密钥数组转为字符串;32.使用预设加密算法对字符串进行加密,得到二次密钥。33.在一实施例中,将所述第一插入位置和第二插入位置插入到混淆密钥数组的预设位置,包括,将所述第一插入位置和第二插入位置插入到混淆密钥数组的最后面。34.在一实施例中,生成二次密钥的模块独立于前端代码,以及前端代码将解密二次密钥得到真实密钥的解密模块作为依赖引入。35.根据本公开的实施例的第三方面,提供一种前端代码处理装置,其特征在于,包括:36.处理器;37.用于存储处理器可执行指令的存储器;38.其中,处理器被配置为:39.获取二次密钥,其中,所述二次密钥是根据真实密钥、预设算法生成的;40.根据所述预设算法解密所述二次密钥得到真实密钥和版本号;41.若版本号校验通过,根据所述真实密钥对前端代码进行加密;42.对前端代码进行深度混淆以生成供浏览器使用的前端代码文件。43.根据本公开的实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机指令,其特征在于,该指令被处理器执行时实现本公开的实施例的第一方面中任一项方法的步骤。44.本公开的实施例提供的技术方案中,避免了异步请求耗时,这在接口请求加密场景下极大的缩短了从后端获取数据的时间,提升页面整体的相应速度和用户体验,也避免了密钥在传输过程中被破解的风险;避免了本地缓存容易导致密钥泄露和更新困难问题;通过引入“二次密钥”,进一步降低了密钥暴露风险,提升破解难度,攻击者即使通过调试最终获取了密钥,该密钥也是经过处理的“二次密钥”,无法直接使用,同时通过密钥的版本校验,可以做到一旦密钥被攻破,可及时更新密钥并升级密钥版本和密钥生成算法,使得已暴露密钥彻底失效,降低密钥暴露带来的损失。45.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。附图说明46.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。47.图1是根据一示例性实施例示出的前端代码处理方法的流程图;48.图2是根据一示例性实施例示出的前端代码处理方法的流程图;49.图3是根据一示例性实施例示出的前端代码处理方法的流程图;50.图4是根据一示例性实施例示出的前端代码处理装置的框图;51.图5是根据一示例性实施例示出的前端代码处理装置的框图;52.图6是根据一示例性实施例示出的前端代码处理装置的框图。具体实施方式53.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。54.对于前端代码的加密密钥,目前业界通常:通过接口请求从服务端获取密钥;将密钥存储在本地客户端缓存中;或者将密钥存储在客户端的混淆压缩代码中。然而,上述对加密密钥的处理方法都不能保证密钥的安全性。本发明的实施例提供一种前端代码处理方法,用以改善这种情况。55.本发明的实施例提供了一种前端代码处理方法,如图1所示,包括如下步骤101至步骤104:56.在步骤101中,获取二次密钥,其中,所述二次密钥是根据真实密钥以及预设算法生成。57.在本实施例中,开发人员在对前端代码进行处理时需要获取密钥,以对前端代码中的待加密信息进行加密。这里待加密信息是代码运行过程中的某些关键信息,比如http请求的请求参数、用户的私密信息等。该二次密钥可以是由独立于业务代码的生成模块根据真实密钥、预设算法生成的,即并非是真实密钥。该生成模块的输入是真实秘钥,然后对真实秘钥进行加密后输出二次秘钥以供使用。这里,将生成二次密钥的模块独立于业务之外,使得攻击者无法通过业务代码破解二次秘钥的加密逻辑。58.在步骤102中,将所述二次密钥引入到前端代码中,并根据预设算法解密二次密钥得到真实密钥和版本号。59.示例的,二次密钥是根据真实密钥、预设的加密算法生成的,那么要获得真实密钥,就可以采用预设的加密算法的逆运算来获得真实密钥。在本实施例中,还为二次密钥增加了版本号,在解密得出真实密钥和版本号后,可以先根据版本号进行校验,前端代码中的解密模块部分内置有正确的版本号,二次秘钥解密后得到的版本号应该和解密模块中内置的版本号一致的。只有校验通过、确认版本号是合法的,该二次密钥才是有效的,可以用来加密前端代码中的待加密信息。这样可以做到一旦密钥被攻破,可及时更新密钥并升级密钥版本和密钥生成算法,使得已暴露密钥彻底失效,降低密钥暴露带来的损失。60.在步骤103中,若版本号校验通过,根据真实密钥对前端代码中的待加密信息进行加密。61.示例的,本实施例中使用aes加密算法对前端代码进行加密。62.在步骤104中,对前端代码进行深度混淆以生成供浏览器使用的前端代码文件。63.此时,前端代码中已经引入了二次密钥,并且,前端代码中的待加密信息已经加密,对当前的前端代码文件进行深度混淆,二次秘钥也被混淆了。在一实施例中,可以使用工具javascript-obfuscator(一种javascript代码混淆工具)进行代码混淆。javascript-obfuscator的混淆比较复杂和彻底,包括对字符串进行切片分别存储、注入无用代码进行逻辑混淆、代码结构扁平化、注入防调试debugger等多种策略,可极大的提升代码的不可读性和不可调试性,同时也使混淆代码的逆向恢复变得更加困难。64.本公开的实施例提供的技术方案中,相较于通过网络请求实时获取密钥方案,本技术提出的方案首先避免了异步请求耗时,这在接口请求加密场景下极大的缩短了从后端获取数据的时间,提升页面整体的相应速度和用户体验。其次也避免了密钥在传输过程中被破解的风险。相较于将密钥存储在本地客户端缓存方案,本技术提出的方案避免了本地缓存容易导致密钥泄露和更新困难问题。相较于直接将真实密钥存储在前端代码的方案,本技术提出的方案通过引入“二次密钥”,进一步降低了密钥暴露风险,提升破解难度。攻击者即使通过调试最终获取了密钥,该密钥也是经过处理的“二次密钥”,无法直接使用,同时通过密钥的版本校验,可以做到一旦密钥被攻破,可及时更新密钥并升级密钥版本和密钥生成算法,使得已暴露密钥彻底失效,降低密钥暴露带来的损失。此外,通过深度代码混淆,相较于业界传统的混淆方式,该方案的混淆代码更加可靠和安全,极大地提升了攻击成本,使得绝大部分攻击者可以知难而退。本技术提出的方案极大的提升了前端aes密钥存储的安全性,并且兼顾了页面性能,在安全性和性能之间取得了很好的平衡。65.下面通过实施例详细介绍实现过程。66.所述步骤101中的二次密钥的生成可以在生成模块进行,与业务代码独立。二次密钥的生成方法可以包括以下步骤a1-a6:67.步骤a1,根据真实密钥生成多个混淆密钥并组成混淆密钥数组,其中,每个混淆密钥是由与真实密钥相同的字符集组成的字符串,并且长度与真实密钥相同。68.如图2所示为生成二次密钥的示意图。首先,根据真实密钥生成混淆密钥,所谓“混淆密钥”就是跟真实密钥拥有相同长度、相同字符集组成的一个字符串,该字符串是随机生成的。从外形特征看,跟真实密钥并无区别。可以一次生成多个混淆密钥:混淆密钥1、混淆密钥2、…、混淆密钥n,多个混淆密钥组成混淆数组a。69.步骤a2,将真实密钥随机插入混淆密钥数组中,将真实密钥在混淆密钥数组中的位置记录为第一插入位置。70.如图2所示,将真实密钥随机插入混淆密钥数组a中,并记住插入位置p1。71.步骤a3,将预设的密钥版本号插入混淆密钥数组中,将密钥版本号在混淆密钥数组中的位置记录为第二插入位置。72.如图2所示,为密钥混淆算法添加版本概念,将此时的版本号插入混淆密钥数组a中,并记住插入位置p2。73.步骤a4,将所述第一插入位置和第二插入位置插入到混淆密钥数组的预设位置。74.如图2所示,将位置p1,p2插入到混淆密钥组数组a的最后面。75.步骤a5,以预设方式将混淆密钥数组转为字符串。76.如图2所示,预设方式例如为特定的转换规则,根据转换规则将混淆密钥数组a转为字符串b。可以根据需要选择合适的转换规则,只要该转换规则能将密钥数组以特定的方式(算法)拼接成一个字符串,并且能从该字符串中还原出原数组的各组成部分即可。77.步骤a6,使用预设加密算法对字符串进行加密,得到二次密钥。78.如图2所示,使用abs加密算法对字符串b进行加密,生成二次密钥。79.至此,生成模块就生成了具有版本号的二次密钥。在对前端代码进行处理时,就可以从生成模块申请二次密钥。80.在一个实施例中,如图3所示,对前端代码进行加密的处理方法可以包括以下步骤301-305:81.步骤301,从生成模块申请二次密钥。其中,生成模块根据预设算法生成二次密钥。82.步骤302,根据上述预设算法对二次密钥进行逆向解密,分别得到真实密钥、版本号。83.在一实施例中,前端代码还可以将对二次密钥进行解密的解密模块作为依赖引入。84.步骤303,对版本号进行校验。85.步骤304,判断版本号是否合法,如果不是则结束,如果是则执行305。86.步骤305,使用真实密钥对前端代码中需要加密的数据进行加密。87.至此,对前端代码的加密过程结束,此时前端代码中引入了二次密钥,并且关键数据已经加密,后续可以将前端代码深度混淆以生成供浏览器使用的前端代码文件。这样,业务中只存储二次密钥,并且例如将“二次密钥”进行切片存储。使用时先将切片组装,然后根据对应的加密过程进行逆向解密,获取真实密钥后再进行业务加密。解密代码通过深度混淆进行隐藏,极大提升了破解难度。此外,针对密钥的二次加密过程独立于业务代码之外,以及业务代码将解密模块作为依赖引入,可以做到随时对密钥加密算法进行升级更新,比如每隔一个固定周期进行密钥升级,可进一步保证密钥存储安全性。88.下述为本公开装置实施例,可以用于执行本公开方法实施例。89.图4是根据一个示例性实施例示出的一种前端代码处理装置的框图,前端构建装置可以为服务器或服务器的一部分,也可以为终端或终端的一部分,前端构建装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图4所示,该前端代码处理装置包括:90.获取模块401,用于获取二次密钥,其中,所述二次密钥是根据真实密钥、预设算法生成的;91.解密模块402,用于将所述二次密钥引入到前端代码中,并根据所述预设算法解密所述二次密钥得到真实密钥和版本号;92.加密模块403,用于若版本号校验通过,根据所述真实密钥对前端代码进行加密;93.混淆模块404,对前端代码进行深度混淆以生成供浏览器使用的前端代码文件。94.在一实施例中,所述装置还包括:生成模块,用于根据真实密钥、预设算法生成二次密钥,包括:95.根据真实密钥生成多个混淆密钥并组成混淆密钥数组,其中,每个混淆密钥是由与真实密钥相同的字符集组成的字符串,并且长度与真实密钥相同;96.将真实密钥随机插入混淆密钥数组中,将真实密钥在混淆密钥数组中的位置记录为第一插入位置;97.将预设的密钥版本号插入混淆密钥数组中,将密钥版本号在混淆密钥数组中的位置记录为第二插入位置;98.将所述第一插入位置和第二插入位置插入到混淆密钥数组的预设位置;99.以预设方式将混淆密钥数组转为字符串;100.使用预设加密算法对字符串进行加密,得到二次密钥。101.在一实施例中,将所述第一插入位置和第二插入位置插入到混淆密钥数组的预设位置,包括,将所述第一插入位置和第二插入位置插入到混淆密钥数组的最后面。102.在一实施例中,生成二次密钥的模块独立于前端代码,以及前端代码将解密二次密钥得到真实密钥的解密模块作为依赖引入。103.图5是根据一示例性实施例示出的一种前端代码处理装置50的框图,该前端构建装置可以为服务器或服务器的一部分,也可以为终端或终端的一部分,前端代码处理装置包括:104.处理器501;105.用于存储处理器501可执行指令的存储器502;106.其中,处理器501被配置为:107.获取二次密钥,其中,所述二次密钥是根据真实密钥、预设算法生成的;108.将所述二次密钥引入到前端代码中,并根据所述预设算法解密所述二次密钥得到真实密钥和版本号;109.若版本号校验通过,根据所述真实密钥对前端代码中的待加密信息进行加密;110.对前端代码进行深度混淆以生成供浏览器使用的前端代码文件。111.图6是根据一示例性实施例示出的一种用于前端代码处理装置600的框图,装置可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。112.装置可以包括以下一个或多个组件:处理组件602,存储器604,电源组件606,多媒体组件608,音频组件610,输入/输出(i/o)的接口612,传感器组件614,以及通信组件616。113.处理组件602通常控制装置600的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理元件502可以包括一个或多个处理器620来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件602可以包括一个或多个模块,便于处理组件602和其他组件之间的交互。例如,处理组件602可以包括多媒体模块,以方便多媒体组件508和处理组件602之间的交互。114.存储器604被配置未存储各种类型的数据以支持在装置600的操作。这些数据的示例包括用于在装置600上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器604可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。115.电源组件606为装置600的各种组件提供电力。电源组件606可以包括电源管理系统,一个或多个电源,及其他与为装置600生成、管理和分配电力相关联的组件。116.多媒体组件608包括在装置600和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件608包括一个前置摄像头和/或后置摄像头。当装置600处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。117.音频组件610被配置为输出和/或输入音频信号。例如,音频组件610包括一个麦克风(mic),当装置600处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器604或经由通信组件616发送。在一些实施例中,音频组件610还包括一个扬声器,用于输出音频信号。118.i/o接口612为处理组件602和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。119.传感器组件614包括一个或多个传感器,用于为装置600提供各个方面的状态评估。例如,传感器组件614可以检测到装置600的打开/关闭状态,组件的相对定位,例如所述组件为装置600的显示器和小键盘,传感器组件614还可以检测装置600或装置600一个组件的位置改变,用户与装置600接触的存在或不存在,装置600方位或加速/减速和装置600的温度变化。传感器组件614可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件614还可以包括光传感器,如cmos或ccd图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件514还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。120.通信组件616被配置为便于装置600和其他设备之间有线或无线方式的通信。装置600可以接入基于通信标准的无线网络,如对讲机专网、wifi,2g、3g、4g或5g,或它们的组合。在一个示例性实施例中,通信组件616经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件616还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。121.在示例性实施例中,装置600可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。122.在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器604,上述指令可由装置600的处理器620执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。123.一种非临时性计算机可读存储介质,当所述存储介质中的指令由装置600的处理器执行时,使得装置600能够执行上述前端代码处理方法,所述方法包括:124.获取二次密钥,其中,所述二次密钥是根据真实密钥、预设算法生成的;125.将所述二次密钥引入到前端代码中,并根据所述预设算法解密所述二次密钥得到真实密钥和版本号;126.若版本号校验通过,根据所述真实密钥对前端代码中的待加密信息进行加密;127.对前端代码进行深度混淆以生成供浏览器使用的前端代码文件。128.本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本技术旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。129.应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。









图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!




内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!




免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

相关内容 查看全部