CN112738085B - 文件安全校验方法、装置、设备及存储介质 - Google Patents
文件安全校验方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112738085B CN112738085B CN202011584274.1A CN202011584274A CN112738085B CN 112738085 B CN112738085 B CN 112738085B CN 202011584274 A CN202011584274 A CN 202011584274A CN 112738085 B CN112738085 B CN 112738085B
- Authority
- CN
- China
- Prior art keywords
- file
- uploaded
- preset
- type
- verification
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/148—File search processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种文件安全校验方法、装置、设备及存储介质。该安全校验方法首先根据服务端的安全性需求配置校验开关,若校验开关为开启状态,对待上传文件进行后缀名校验。若后缀名校验通过,根据待上传文件对应的开源工具对待上传文件的文件内容进行内容校验,当内容校验通过,才将待上传文件上传至服务端。从而基于待上传文件的开源工具对文件内容进行合理且有效的安全校验,避免了将文件内容存在安全隐患的文件上传至服务端,保证了服务端的安全性,以保障服务端正常运行。
Description
技术领域
本申请涉及金融科技(Fintech)技术领域,尤其涉及一种文件安全校验方法、装置、设备及存储介质。
背景技术
随着互联网技术,尤其是互联网金融科技(Fintech)的飞速发展,越来越多的技术(大数据、分布式、区块链Blockchain、人工智能等)应用在金融领域,使得金融业务以及金融业务相关的业务数据呈爆炸式增长。金融业务平台中服务端的安全性直接关系金融业务平台乃至整个系统的安全性,一旦安全受到威胁,对金融数据会造成无法挽回的重大损失。因此,为了保证服务端的安全性,原则上服务端拒绝上传一切非法文件。
现有技术中,向服务端上传文件的流程大致为,上传文件的请求方,即上传请求的发起机构,首先根据需要上传的文件确定出相应签名,然后向Nginx服务器发出文件上传请求,由Nginx服务器对发起机构和服务端进行https双向认证以检验发起机构的合法性,若校验通过,则建立连接,继而将上传请求转换为https请求,上传文件流至前置端,再由前置端将文件上传至对应服务端的服务器,从而完成向服务端对应服务器的上传文件。
然而,上述上传过程仅是对发起机构的合法性进行了校验,并未考虑上传文件的内容是否合法,若将可能存在安全隐患的不合法文件通过上述流程上传至服务端,对服务端的安全性造成未知威胁。
发明内容
本申请提供一种文件安全校验方法、装置、设备及存储介质,用于解决现有技术中文件上传仅考虑上传机构的合法性,未对文件内容合法性进行有效验证,会对服务端的安全性造成未知威胁的技术问题。
第一方面,本申请提供一种文件安全校验方法,包括:
根据服务端的安全性需求配置校验开关,若所述校验开关为开启状态,对待上传文件进行后缀名校验;
若所述后缀名校验通过,基于所述待上传文件对应的开源工具对所述待上传文件的文件内容进行内容校验;
若所述内容校验通过,上传所述待上传文件至所述服务端。
在一种可能的设计中,所述基于所述待上传文件对应的开源工具对所述待上传文件的文件内容进行内容校验,包括:
通过分发模块将所述待上传文件按照文件类型进行分发,所述文件类型包括图片类型、电子表格类型、可移植文档类型以及文本类型中的一种;
对分发后的所述待上传文件利用对应的所述开源工具进行所述内容校验。
在一种可能的设计中,若所述待上传文件的所述文件类型为所述图片类型,所述利用对应的所述开源工具进行所述内容校验,包括:
判断所述待上传文件的文件头是否符合第一预设文件头,所述第一预设文件头为所述图片类型对应的固定字节;
若判断结果为是,使用图片处理类读取所述待上传文件,并在读取成功后,根据反馈对象判断所述待上传文件的所述文件内容是否符合图片内容格式,所述图片类型对应的所述开源工具包括所述图片处理类;
若是,则所述待上传文件通过所述内容校验。
在一种可能的设计中,所述使用图片处理类读取所述待上传文件,包括:
获取所述待上传文件的第一文件类型魔数,并确定所述第一文件类型魔数是否符合第一预设文件类型魔数,所述第一预设文件类型魔数为所述图片类型对应的头字节;
若是,则确定所述读取成功,并进一步读取所述待上传文件的内存信息,以得到所述反馈对象。
在一种可能的设计中,若所述待上传文件的所述文件类型为所述电子表格类型,所述利用对应的所述开源工具进行所述内容校验,包括:
通过预设接口读取所述待上传文件,若读取成功,获取所述待上传文件的源码信息,所述源码信息为所述待上传文件实例化后得到的代码信息,所述电子表格类型对应的所述开源工具包括所述预设接口;
根据所述源码信息确定所述待上传文件的文件数据被拆分后形成的多个数据段,每个数据段存储于对应的数据容器;
初始化各数据容器,得到所述待上传文件对应的文件字节码,若判断所述文件字节码中包含预设文件类型名,则所述待上传文件通过所述内容校验。
在一种可能的设计中,若所述待上传文件的所述文件类型为所述可移植文档类型,所述利用对应的所述开源工具进行所述内容校验,包括:
通过第一预设解析库对所述待上传文件进行数据解析,并当所述数据解析成功时得到所述待上传文件对应的文件对象,所述可移植文档类型对应的所述开源工具包括所述第一预设解析库;
根据所述文件对象获取所述待上传文件的页码总数,若判断所述页码总数符合预设页码数,则所述待上传文件通过所述内容校验。
在一种可能的设计中,所述通过第一预设解析库对所述待上传文件进行数据解析,包括:
对所述待上传文件的文件头进行版本校验,若获取到预设版本号,则所述版本校验通过,所述预设版本号为所述可移植文档类型对应的版本信息;
获取所述待上传文件的文件尾信息,以通过所述第一预设解析库解析所述文件尾信息;
若所述文件尾信息解析成功,则根据所述文件尾信息获取文件目录对象,以根据所述文件目录对象获取所述待上传文件的各页面对象;
通过所述第一预设解析库对每个页面对象进行解析,若每个页面对象都解析成功,则所述数据解析成功。
在一种可能的设计中,若所述待上传文件的所述文件类型为所述文本类型,则所述利用对应的所述开源工具进行所述内容校验,包括:
通过第二预设解析库对所述待上传文件进行解析,若解析过程中未上报解析错误,则所述待上传文件通过所述内容校验,所述文本类型对应的所述开源工具包括所述第二预设解析库。
在一种可能的设计中,所述通过第二预设解析库对所述待上传文件进行解析,包括:
通过所述第二预设解析库读取所述待上传文件,判断所述待上传文件的分隔符规则是否满足预设分隔符,所述预设分隔符为预设构造器对应的各分隔符规则,所述预设构造器包括默认构造器或自定义构造器;
若是,不上报所述解析错误;
若否,上报所述解析错误。
在一种可能的设计中,所述对待上传文件进行后缀名校验,包括:
获取所述待上传文件的文件名后缀,若确定已获取到所述文件名后缀,判断预设黑名单中是否包含所述文件名后缀;
若否,则当白名单检验开关开启时,确定预设白名单中是否包含所述文件名后缀;
在确定所述预设白名单包含所述文件名后缀时,所述文件名后缀对应的所述待上传文件通过所述后缀名检验。
第二方面,本申请提供一种文件安全校验装置,包括:
第一处理模块,用于根据服务端的安全性需求配置校验开关,若所述校验开关为开启状态,对待上传文件进行后缀名校验;
第二处理模块,用于若所述后缀名校验通过,基于所述待上传文件对应的开源工具对所述待上传文件的文件内容进行内容校验;
上传模块,用于若所述内容校验通过,上传所述待上传文件至所述服务端。
在一种可能的设计中,所述第二处理模块,具体用于:
通过分发模块将所述待上传文件按照文件类型进行分发,所述文件类型包括图片类型、电子表格类型、可移植文档类型以及文本类型中的一种;
对分发后的所述待上传文件利用对应的所述开源工具进行所述内容校验。
在一种可能的设计中,若所述待上传文件的所述文件类型为所述图片类型,所述第二处理模块,包括:第一子模块;所述第一子模块,用于:
判断所述待上传文件的文件头是否符合第一预设文件头,所述第一预设文件头为所述图片类型对应的固定字节;
若判断结果为是,使用图片处理类读取所述待上传文件,并在读取成功后,根据反馈对象判断所述待上传文件的所述文件内容是否符合图片内容格式,所述图片类型对应的所述开源工具包括所述图片处理类;
若是,则所述待上传文件通过所述内容校验。
在一种可能的设计中,所述第一子模块,还用于:
获取所述待上传文件的第一文件类型魔数,并确定所述第一文件类型魔数是否符合第一预设文件类型魔数,所述第一预设文件类型魔数为所述图片类型对应的头字节;
若是,则确定所述读取成功,并进一步读取所述待上传文件的内存信息,以得到所述反馈对象。
在一种可能的设计中,若所述待上传文件的所述文件类型为所述电子表格类型,所述第二处理模块,包括:第二子模块;所述第二子模块,用于:
通过预设接口读取所述待上传文件,若读取成功,获取所述待上传文件的源码信息,所述源码信息为所述待上传文件实例化后得到的代码信息,所述电子表格类型对应的所述开源工具包括所述预设接口;
根据所述源码信息确定所述待上传文件的文件数据被拆分后形成的多个数据段,每个数据段存储于对应的数据容器;
初始化各数据容器,得到所述待上传文件对应的文件字节码,若判断所述文件字节码中包含预设文件类型名,则所述待上传文件通过所述内容校验。
在一种可能的设计中,若所述待上传文件的所述文件类型为所述可移植文档类型,所述第二处理模块,包括:第三子模块;所述第三子模块,用于:
通过第一预设解析库对所述待上传文件进行数据解析,并当所述数据解析成功时得到所述待上传文件对应的文件对象,所述可移植文档类型对应的所述开源工具包括所述第一预设解析库;
根据所述文件对象获取所述待上传文件的页码总数,若判断所述页码总数符合预设页码数,则所述待上传文件通过所述内容校验。
在一种可能的设计中,所述第三子模块,还用于:
对所述待上传文件的文件头进行版本校验,若获取到预设版本号,则所述版本校验通过,所述预设版本号为所述可移植文档类型对应的版本信息;
获取所述待上传文件的文件尾信息,以通过所述第一预设解析库解析所述文件尾信息;
若所述文件尾信息解析成功,则根据所述文件尾信息获取文件目录对象,以根据所述文件目录对象获取所述待上传文件的各页面对象;
通过所述第一预设解析库对每个页面对象进行解析,若每个页面对象都解析成功,则所述数据解析成功。
在一种可能的设计中,若所述待上传文件的所述文件类型为所述文本类型,所述第二处理模块,包括:第四子模块;所述第四子模块,用于:
通过第二预设解析库对所述待上传文件进行解析,若解析过程中未上报解析错误,则所述待上传文件通过所述内容校验,所述文本类型对应的所述开源工具包括所述第二预设解析库。
在一种可能的设计中,所述第四子模块,还用于:
通过所述第二预设解析库读取所述待上传文件,判断所述待上传文件的分隔符规则是否满足预设分隔符,所述预设分隔符为预设构造器对应的各分隔符规则,所述预设构造器包括默认构造器或自定义构造器;
若是,不上报所述解析错误;
若否,上报所述解析错误。
在一种可能的设计中,所述第一处理模块,还用于:
获取所述待上传文件的文件名后缀,若确定已获取到所述文件名后缀,判断预设黑名单中是否包含所述文件名后缀;
若否,则当白名单检验开关开启时,确定预设白名单中是否包含所述文件名后缀;
在确定所述预设白名单包含所述文件名后缀时,所述文件名后缀对应的所述待上传文件通过所述后缀名检验。
第三方面,本申请提供一种电子设备,包括:
处理器;以及
存储器,用于存储所述处理器的计算机程序;
其中,所述处理器配置为经由执行所述计算机程序来执行第一方面中任一项所述的文件安全校验方法。
第四方面,本申请提供一种存储有计算机程序的非瞬时计算机可读存储介质,所述计算机程序被处理器执行时实现第一方面中任一项所述的文件安全校验方法。
第五方面,本申请提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现第一方面中任一项所述的文件安全校验方法。
本申请提供一种文件安全校验方法、装置、设备及存储介质。根据服务端的安全性需求配置校验开关,若校验开关为开启状态,则对待上传文件进行后缀名校验。若后缀名校验通过,根据待上传文件对应的开源工具对待上传文件的文件内容进行内容校验,当内容校验通过,才将待上传文件上传至服务端。从而基于待上传文件的开源工具实现对文件内容的有效校验,避免文件内容存在安全隐患的文件被上传至服务端,保证了服务端的安全性,有利于服务端的正常运行。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种应用场景示意图;
图2为本申请实施例提供的一种文件安全校验方法的流程示意图;
图3为本申请实施例提供的另一种文件安全校验方法的流程示意图;
图4为本申请实施例提供的再一种文件安全校验方法的流程示意图;
图5为本申请实施例提供的又一种文件安全校验方法的流程示意图;
图6为本申请实施例提供的又一种文件安全校验方法的流程示意图;
图7为本申请实施例提供的一种数据解析流程示意图;
图8为本申请实施例提供的一种解析过程流程示意图;
图9为本申请实施例提供的一种文件安全校验装置的结构示意图;
图10为本申请提供的一种电子设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的方法和装置的例子。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
金融业务平台中服务端的安全性直接关系金融业务平台乃至整个系统的安全性。为了保证服务端的安全性,服务端应当拒绝上传一切非法文件。然而,在现有技术中,通常仅针对上传文件的发起机构的合法性进行检验,例如,通常采用的上传流程大致为,上传请求的发起机构根据需要上传的文件确定相应签名,然后基于Nginx服务器对发起机构和服务端进行https双向认证以检验发起机构的合法性,若检验通过,则相互之间建立连接,继而将上传请求转换为https请求,上传文件流至前置端,再由前置端将文件上传至对应服务端的服务器,完成向服务器的文件上传。可见,对于上传文件的文件内容是否合法不会进行有效校验。因而会导致存在安全隐患的非法文件上传至服务器,对服务器的正常运行造成未知威胁。
针对现有技术中的上述问题,本申请提供了一种文件安全校验方法、装置、设备及存储介质。本申请提供的文件安全校验方法的发明构思在于:对于需要上传至服务端的待上传文件,首先在确定该待上传文件需要校验的情况下,对其进行后缀名校验。后缀名校验通过后,基于待上传文件对应的开源工具对待上传文件的文件内容进行内容校验,在内容校验通过后,才将该待上传文件上传至服务端,完成向服务端对应服务器的文件上传任务。由于对待上传文件的文件内容利用对应的开源工具进行了有效校验,能够有效避免存在安全隐患的文件被上传至服务端,保证了服务端的安全性,有利于服务端的正常运行。
以下,对本申请实施例的示例性应用场景进行介绍。
图1为本申请实施例提供的一种应用场景示意图,如图1所示,网络用于为终端设备11和服务器12之间提供通信链路的介质,网络可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。终端设备11和服务器12之间可以通过网络进行交互,以接收或发送消息。其中,终端设备11可以被配置于上传文件的发起机构方,服务器12可以被配置于服务端,服务端可以是与发起机构之间具有合作或者服务关系的金融业务平台方。终端设备11与服务器12之间构成文件上传的应用场景,本申请实施例提供的文件安全校验方法适用于该应用场景中,从而可以对终端设备11发起的上传请求所指向的上传至服务器12的文件进行有效的安全校验,避免存在安全隐患的文件被上传至服务端的服务器12中,保证了服务端的安全性,有利于服务端的正常运行。
值得理解的是,上述应用场景中配置于发起机构方的终端设备11也可以为服务器或者服务器集群,对此,本实施例不作限定。另外,本申请实施例对于上述描述中终端设备的类型不作限定,例如终端设备11可以是计算机、智能手机、智能眼镜、智能手环、智能手表、平板电脑等等,图1中的终端设备11以计算机为例示出。
需要说明的是,上述应用场景仅仅是示意性的,本申请实施例提供的文件安全校验方法、装置、设备及存储介质包括但不仅限于上述应用场景。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图2为本申请实施例提供的一种文件安全校验方法的流程示意图,如图2所示,本实施例提供的文件安全校验方法,包括:
S101:根据服务端的安全性需求配置校验开关,若校验开关为开启状态,对待上传文件进行后缀名校验。
不同的服务端对于安全性的要求不同,在服务端根据其安全性需求配置校验开关,例如,当校验开关为开启状态时,表明对于待上传至该服务端的文件需要进行安全校验,反之,即当校验开关为关闭状态时,表明对于待上传至该服务端的文件无需进行安全校验。从而根据不同服务端的安全性需求的不同,将待上传文件的安全校验设置为可选项,以实现灵活化配置。
针对待上传文件,在检验开关为开启状态时,表明需对该待上传文件进行安全校验。首先,对待上传文件进行后缀名校验,换言之,对待上传文件的后缀名进行校验。对于任一待上传文件,其都存在对应的文件名,该文件名中可能包括后缀名,后缀名用于指示文件类型。因此,当检验开关为开启状态,首先对该上传文件的后缀名进行校验,即对上传文件进行后缀名校验。
在一种可能的设计中,本步骤S101对待上传文件进行后缀名校验可能的实现方式如图3所示,图3为本申请实施例提供的另一种文件安全校验方法的流程示意图,如图3所示,本实施例提供的文件安全校验方法,包括:
S1011:获取待上传文件的文件名后缀,若确定已获取到文件名后缀,判断预设黑名单中是否包含文件名后缀。
获取待上传文件的文件名后缀,若能够获取到对应的文件名后缀,即确定已获取到文件名后缀,则进一步判断预设黑名单中是否包含文件名后缀。反之,若未能够获取到文件名后缀,则可以根据服务端的安全性需求确定服务端是否允许上传没有文件名后缀的待上传文件,若允许,则直接进行文件上传,若不允许,则未包含有文件名后缀的该待上传文件不能被上传至服务端,可以认为该待上传文件不合法,未通过安全校验。
判断预设黑名单中是否包含文件名后缀,可以理解为,预设黑名单中包含有多个预设文件名后缀,这些预设文件名后缀对应的文件是不被允许上传至服务端的文件。具体地,预设黑名单中的具体内容可以根据实际工况中服务端的安全性需求、服务端涉及的业务等情况进行设置,对此,本实施例不作限定。
经过判断之后,若被包含,即判断结果为是,则表明该文件名后缀对应的该待上传文件不被允许上传至服务端,执行步骤S1014,即待上传文件未通过后缀名校验。反之,若未被包含,即判断结果为否,则可以执行步骤S1012以进一步进行后缀名校验。
S1012:当白名单检验开关开启时,确定预设白名单中是否包含文件名后缀。
为了加强后缀名校验的有效性,还可以对后缀名进行白名单校验。其中,是否进行白名单校验也为可选项,即当白名单检验开关开启时进行白名单校验,白名单检验开关未开启时,则不进行白名单校验,进一步地,若不进行白名单校验,则判定未包含在预设黑名单中的文件名后缀对应的该待上传文件通过后缀名校验。
而当白名单检验开关开启时,表明该文件名后缀还需进一步进行白名单校验。具体地,确定上述未包含在预设黑名单中的该文件名后缀是否包含在预设白名单中,若是,执行步骤S1013,即确定该文件名后缀对应的待上传文件通过后缀名校验。反之,若否,执行步骤S1014,该文件名后缀对应的待上传文件未通过后缀名校验。可以理解的是,预设白名单可以提前设置,预设白名单中包含多个文件名后缀,这些文件名后缀对应的文件为通过后缀名校验的文件。在实际工况中,预设白名单中各个具体的文件名后缀可以根据实际情况设置,对此,本实施例不作限定。
S1013:在确定预设白名单包含文件名后缀时,文件名后缀对应的待上传文件通过后缀名检验。
S1014:文件名后缀对应的待上传文件未通过后缀名检验
通过上一步骤描述可知,当确定预设白名单中包含有该文件名后缀,则确定该文件名后缀对应的待上传文件通过后缀名校验,反之,则未通过后缀名校验。
本申请实施例提供的文件安全校验方法,在检验开关为开启状态时,对待上传文件进行后缀名校验。首先获取待上传文件的文件名后缀,若确定已获取到文件名后缀,判断预设黑名单中是否包含文件名后缀。若确定预设黑名单中未包含该文件名后缀,则在白名单检验开关开启时,确定预设白名单中是否包含该文件名后缀,若包含,则确定该文件名后缀对应的待上传文件通过后缀名检验。本实施例提供的对于待上传文件进行后缀名校验时,根据服务端的安全性需求灵活配置校验开关,以对待上传文件灵活进行后缀名校验。
需要说明的是,本申请实施例提供的文件安全校验方法,也需对上传请求发起机构的合法性依然进行检验。例如,对于对外提供接口的网页(web)项目,可以通过过滤器与拦截器,对所有的上传请求进行判断,判断该上传请求是否为文件上传请求,如果是文件上传请求,在当检验上传请求的发起机构合法的情况下,进行本申请实施例提供的文件安全校验方法。另外,当发起机构的合法性校验不通过时,可以通过http协议特定的错误码进行响应,例如,可以使用415-不支持的媒体类型(Unsupported media type)进行反馈。
S102:若后缀名校验通过,基于待上传文件对应的开源工具对待上传文件的文件内容进行内容校验。
若待上传文件的后缀名校验通过,则基于待上传文件对应的开源工具对待上传文件的文件内容进行内容校验,若内容校验通过,则执行步骤S103,将待上传文件上传至服务端。反之,若内容校验不通过,则该待上传文件不能被上传至服务端,可以通过设置报警提示进行反馈。从而,通过本申请实施例提供的文件安全校验方法,可以保证上传至服务端的文件的文件内容具备合法性。
对于待上传文件而言,不同的文件类型,都有对应的开源工具可以对该文件类型对应的文件内容进行解析和读取,因此,可以借助这类工具,对待上传文件的文件内容进行内容校验,从而达到对待上传文件进行合理且有效的安全校验。
例如,在实际工况中,可以配置分发模块,对于通过后缀名校验的待上传文件,由分发模块按照待上传文件各自对应的文件类型进行对应分发,对分发后的待上传文件利用各自对应的开源工具进行内容校验。
文件类型可以包括图片类型、电子表格类型、可移植文档类型以及文本类型中的一种。比如,待上传文件若为JPG(Joint Picture Group)文件,其文件类型则为图片类型;待上传文件若为XLSX文件,其文件类型则为电子表格类型,待上传文件若为PDF(PortableDocument Format)文件,其文件类型则为可移植文档类型;待上传文件若为CSV(Comma-Separated Values)文件,其文件类型则为文本类型。可以理解的是,待上传文件的文件类型包括但不仅限于上述列举的各文件类型。另外,图片类型对应的文件也可以为GIF文件、PNG文件、BMP文件以及WEBP文件等。可以理解的是,通常可以根据待上传文件的文件名后缀判断其对应的文件类型,从而将属于同一文件类型的待上传文件分发至一类,进而利用该类文件类型对应的开发工具进行内容校验。
当内容校验通过,表明待上传文件的文件内容合法,执行步骤S103,将待上传文件上传至服务端。
S103:若内容校验通过,上传待上传文件至服务端。
若内容校验通过,将待上传文件上传至服务端指定的服务器,完成文件上传。可以理解的是,本步骤的待上传文件为已通过内容校验的待上传文件。
本申请实施例提供的文件安全校验方法,首先根据服务端的安全性需求配置校验开关,在校验开关为开启状态时,对待上传文件进行后缀名校验。对于通过后缀名校验的待上传文件,基于各自对应的开源工具对文件内容进行内容校验。若内容校验通过,才将该已通过内容校验的待上传文件上传至服务端。从而基于待上传文件的开源工具对文件内容进行合理且有效的安全校验,避免了将文件内容存在安全隐患的文件上传至服务端,保证了服务端的安全性,以保障服务端的正常运行。
在一种可能的设计中,若待上传文件的文件类型为图片类型,利用对应的开源工具进行内容校验可能的实现方式如图4所示,图4为本申请实施例提供的再一种文件安全校验方法的流程示意图,如图4所示,本实施例提供的文件安全校验方法,包括:
S201:判断待上传文件的文件头是否符合第一预设文件头。
其中,第一预设文件头为图片类型对应的固定字节。
对于图片类型的文件而言,其文件头信息为固定字节,该固定字节即为第一预设文件头,例如判断文件头是否为FFD8。因此,判断待上传文件的文件头是否符合第一预设文件头,若符合,即判断结果为是,则继续进行内容校验,执行步骤S202。反之,若不符合,则判定该待上传文件内容校验不通过,即执行步骤S204。
S202:使用图片处理类读取待上传文件,并在读取成功后,根据反馈对象判断待上传文件的文件内容是否符合图片内容格式。
其中,图片类型对应的开源工具包括图片处理类。
在步骤S201判断结果为是后,使用图片处理类读取该待上传文件,例如,使用JDK自带的图片处理类javax、imageio、ImageIO以及read(File)中的一种读取该待上传文件,若能够正常读取,则表示读取成功,执行步骤S203。反之,则表示读取失败,执行步骤S204。在读取成功后,通常会反馈回一反馈对象,例如,当通过上述列举的图片处理类读取成功时,会返回一个Buffered Image对象。反馈对象中往往封装有一些针对图片文件的操作方法,比如获取图片像素、获取图片长和宽等操作。
因此,在读取成功后,进一步根据反馈对象判断待上传文件的文件内容是否符合图片内容格式。具体地,可以获取待上传文件所对应文件内容的像素、长和宽中的一种,若能够获取到,则表明该上传文件的文件内容符合图片内容格式,执行步骤S203。反之,若不能够获取到,则表明该待上传文件未通过内容校验,执行步骤S204。可以理解的是,本实施例中的图片内容格式可以包括图片像素、图片长和宽等格式。
需要说明的是,待上传文件的文件类型不同,其对应的开源工具则可能不同,对于图片类型的待上传文件,则可以基于图片处理类进行读取,以实现有效校验,图片类型对应的开源工具包括图片处理类。另外,上述列举的图片处理类仅是示意性地,并不表示将图片处理类限定与此,在实际工况中,可以针对待上传文件的实际情况,选用其开源工具对应的图片处理类,以对该上传文件进行读取,进而实现有效校验。
可选地,步骤S202中使用图片处理类读取待上传文件可能的实现方式可以为,获取待上传文件的第一文件类型魔数,并确定第一文件类型魔数是否符合第一预设文件类型魔数,若是,则表示读取成功,并进一步读取待上传文件的内存信息,以得到反馈对象。反之,若第一文件类型魔数与第一预设文件类型魔数不符,则表示读取失败。其中,第一预设文件类型魔数为图片类型对应的头字节,该头字节为固定字节。
S203:待上传文件通过内容校验。
S204:待上传文件未通过内容校验。
在根据反馈对象确定待上传文件的文件内容符合图片内容格式,则确定待上传文件通过内容校验。
当上述步骤S201或步骤S202中的判断结果为否,或者图片处理类读取失败时,确定待上传文件未通过内容校验。
本申请实施例提供的文件安全校验方法,若待上传文件的文件类型为图片类型,首先判断待上传文件的文件头是否符合第一预设文件头,第一预设文件头为图片类型对应的固定字节。若判断结果为是,使用图片处理类读取待上传文件,图片类型对应的开源工具包括图片处理类。并在读取成功后,根据反馈对象判断待上传文件的文件内容是否符合图片内容格式,若符合,确定待上传文件通过内容校验,从而通过图片类型对应的开源工具对图片类型的待上传文件进行内容校验,校验过程合理且有效。进而将通过内容校验的待上传文件上传至服务端,保证了服务端的安全性。
在一种可能的设计中,若待上传文件的文件类型为电子表格类型,利用对应的开源工具进行内容校验可能的实现方式如图5所示,图5为本申请实施例提供的又一种文件安全校验方法的流程示意图,如图5所示,本实施例提供的文件安全校验方法,包括:
S301:通过预设接口读取待上传文件,若读取成功,获取待上传文件的源码信息。
其中,源码信息为待上传文件实例化后得到的代码信息,电子表格类型对应的开源工具包括预设接口。
对于电子表格类型的待上传文件,可以通过预设接口读取待上传文件,例如,可以使用Apache的poi包读取待上传文件,Apache的poi包即为预设接口,电子表格类型的待上传文件的开源工具包括预设接口。在读取中,如果读取成功,则可以获取到待上传文件的源码信息。其中,源码信息为电子表格类型的待上传文件实例化后得到的代码信息。而若读取中出现任何错误,都会直接进行报错,表明该待上传文件未通过内容校验。
例如,如果该待上传文件的文件名后缀实质为.doc,但可能被伪造为.xlsx,因此,该待上传文件通过了后缀名校验,被分发到电子表格类型的文件中进行内容校验,当执行本步骤中通过预设接口读取时,则会直接报错,表示内容校验未通过,该待上传文件为非法文件。
可以理解的是,当无法进行正常的实例化时,也会直接报错,则不能获取到对应的源码信息。因此,源码信息为对待上传文件正常进行实例化,在实例化后得到的代码信息。
S302:根据源码信息确定待上传文件的文件数据被拆分后形成的多个数据段。
其中,每个数据段存储于对应的数据容器。
通过源码信息可以发现,在进行实例化时,待上传文件的文件数据会被拆分为一个又一个的数据段,并会将每个数据段存放在对应的数据容器中,该数据容器可以为OPCPackage。因此,可以根据源码信息确定待上传文件的文件数据被拆分后形成的多个数据段,进入确定存储每个数据段的对应数据容器。
S303:初始化各数据容器,得到待上传文件对应的文件字节码,若判断文件字节码中包含预设文件类型名,则确定待上传文件通过内容校验。
在确定了各数据容器后,对各数据容器进行初始化,以得到待上传文件对应的文件字节码,判断该文件字节码中是否包含预设文件类型名,若包含,则确定待上传文件通过内容校验。若不包含,则待上传文件未通过内容校验,该待上传文件为非法文件。
对于电子表格类型的文件而言,初始化数据容器得到对应的文件字节码,文件字节码中会存在一个特殊的字段,该特殊字段以.xml结尾,可以表征对应的文件为电子表格类型。因此,可以将预设文件类型名设置为以.xml结尾的特殊字段。从而,通过判断待上传文件对应的文件字节码是否包含预设文件类型名,来校验该待上传文件是否可以通过内容校验,保证待上传文件的文件类型为真实的电子类型表格,而非伪造或其他非法的文件类型。预设文件类型名可以通过文本编辑器进行查看。
本申请实施例提供的文件安全校验方法,若待上传文件的文件类型为电子表格类型,首先通过预设接口读取待上传文件,若读取成功,获取待上传文件的源码信息。然后根据源码信息确定待上传文件的文件数据被拆分后形成的多个数据段,每个数据段存储于对应的数据容器。再初始化各数据容器,得到待上传文件对应的文件字节码,判断文件字节码中是否包含预设文件类型名,若包含,则确定待上传文件通过内容校验。从而通过电子表格类型对应的开源工具对待上传文件进行内容校验,校验过程合理且有效。进而将通过内容校验的待上传文件上传至服务端,保证了服务端的安全性。
在一种可能的设计中,若待上传文件的文件类型为可移植文档类型,利用对应的开源工具进行内容校验可能的实现方式如图6所示,图6为本申请实施例提供的又一种文件安全校验方法的流程示意图,如图6所示,本实施例提供的文件安全校验方法,包括:
S401:通过第一预设解析库对待上传文件进行数据解析,并当数据解析成功时得到待上传文件对应的文件对象。
其中,可移植文档类型对应的开源工具包括第一预设解析库。
通过可移植文档类型对应的开源工具中的第一预设解析库对待上传文件进行数据解析,例如,可以使用PDF Box解析库对待上传文件进行数据解析,PDF Box解析库可以为第一预设解析库。只有当数据解析过程中没有问题,才可以获得待上传文件对应的文件对象,换言之,在解析过程中未报错,则解析成功,可以得到待上传文件对应的文件对象,比如在解析成功时可以得到待上传文件对应的PDDocument对象,该PDDocument对象即为待上传文件的文件对象。
可以理解的是,第一预设解析库包括但不仅限于PDF Box解析库,文件对象包括但不仅限于PDDocument对象。
S402:根据文件对象获取待上传文件的页码总数,若判断页码总数符合预设页码数,则确定待上传文件通过内容校验。
在解析成功得到文件对象后,根据文件对象获取待上传文件的页码总数,并判断页码总数是否符合预设页码数,若符合,则表明待上传文件通过了内容校验。反之,若不符合,则都判定待上传文件未通过内容校验,该待上传文件为非法文件。其中,预设页码数是服务端根据当前等待上传的实际工况提前设置的,对此,本实施例不作限定。
可选地,步骤S401中通过第一预设解析库对待上传文件进行数据解析的可能实现方式如图7所示,图7为本申请实施例提供的一种数据解析流程示意图,如图7所示,本实施例提供的数据解析,包括:
S4011:对待上传文件的文件头进行版本校验,若获取到预设版本号,则版本校验通过。
其中,预设版本号为可移植文档类型对应的版本信息。
在数据解析过程中,首先对待上传文件的文件头进行版本校验,如果能获取到预设版本号,则表示版本校验通过。假如没有获取到预设版本号,或者获取到的版本信息与预设版本号不符,则都认为未获取到预设版本号,均判定版本校验未通过。可以理解的是,预设版本号为可移植文档类型的文件对应的版本信息,例如“PDF-1.4”可以为一预设版本号。预设版本号可以由服务端设置,对此,本实施例不作限定。
S4012:获取待上传文件的文件尾信息,以通过第一预设解析库解析文件尾信息。
在版本校验通过后,获取待上传文件的文件尾信息(Trailer),以通过第一预设解析库解析文件尾信息,在获取过程和解析过程中若未报错,则表明文件尾信息解析成功。反之,则文件尾信息解析失败。
S4013:若文件尾信息解析成功,则根据文件尾信息获取文件目录对象,以根据文件目录对象获取待上传文件的各页面对象。
当文件尾信息解析成功,进一步根据文件尾信息获取文件目录对象(Catalog)。对于可移植文档类型的文件而言,文件目录对象为根对象,获取根对象后,可以使用根对象查找文件的所有页面对象。因此,在本步骤对文件尾信息解析成功后,根据文件尾信息获取文件目录对象,以根据文件目录对象获取待上传文件的各页面对象。
S4014:通过第一预设解析库对每个页面对象进行解析,若每个页面对象都解析成功,则数据解析成功。
得到各页面对象后,通过第一预设解析库对每个页面对象进行解析,如果每个页面对象的解析过程中都未报错,即每个页面对象都解析成功,则确定第一预设解析库对于该待上传文件的数据解析成功。
本申请实施例提供的文件安全校验方法,若待上传文件的文件类型为可移植文档类型,可以通过本实施例提供的文件安全校验方法进行内容校验。首先通过第一预设解析库对待上传文件进行数据解析,可移植文档类型对应的开源工具包括第一预设解析库,当数据解析成功时得到待上传文件对应的文件对象。然后根据文件对象获取待上传文件的页码总数,并判断页码总数是否符合预设页码数,若符合,则确定待上传文件通过内容校验。从而基于可移植文档类型对应的开源工具对待上传文件的文件内容进行校验,实现对可移植文件类型的待上传文件的合法性的完整且有效校验,将通过内容校验的待上传文件上传至服务端,保证了服务端的安全性。
在一种可能的设计中,若待上传文件的文件类型为文本类型,利用对应的开源工具进行内容校验可能的实现方式为:
通过第二预设解析库对待上传文件进行解析,若解析过程中未上报解析错误,则待上传文件通过内容校验。其中,文本类型对应的开源工具包括第二预设解析库。
例如,可以使用Apache Commons CSV解析库读取待上传文件,以对其进行解析。Apache Commons CSV解析库即为第二预设解析库。在解析过程中,若未上报解析错误,则表明解析成功,文本类型的该待上传文件通过内容校验。反之,若未能正常进行解析,均会直接上报解析错误。
可选地,第二预设解析库对待上传文件进行解析的可能实现方式如图8所示,图8为本申请实施例提供的一种解析过程流程示意图,如图8所示,本实施例提供的第二预设解析库对待上传文件进行解析,包括:
S500:通过第二预设解析库读取待上传文件,判断待上传文件的分隔符规则是否满足预设分隔符。
其中,预设分隔符为预设构造器对应的各分隔符规则,预设构造器包括默认构造器或自定义构造器。
S501:若是,不上报解析错误。
S502:若否,上报解析错误。
第二预设解析库对待上传文件的解析过程可以为,通过第二预设解析库读取待上传文件,当第二预设解析库确定时,根据其对应的API定义,可以有默认CSV构造器,默认CSV构造器具有对应的分隔符规则,比如默认CSV构造器使用英文逗号作为分隔符号,使用双引号引用字段,记录之间通过回车换行符作为区分。
因此,服务端针对文本类型的文件,可以设置预设构造器,该预设构造器可以为第二预设解析库对应的默认构造器,例如上述的默认CSV构造器,也可以为自定义构造函数得到的自定义构造器,其中自定义构造函数用于定义自定义构造器的分隔符规则。自定义构造器可以提高对文本类型的待上传文件进行内容校验的灵活性。
当设置了预设构造器后,则该预设构造器对应的各分隔符规则即可确定,预设构造器对应的各分隔符规则即为预设分隔符。故而,可以通过判断待上传文件的分隔符规则是否满足预设分隔符,来确定第二预设解析库是否可以对待上传文件解析成功。
经过判断,当满足,即判断结果为是,则表明第二预设解析库对待上传文件解析成功,不上报解析错误,执行步骤S501。反之,上报解析错误,执行步骤S502。比如待上传文件的分隔符规则中以句号作为分隔符,而预设构造器对应的预设分隔符是以英文逗号为分隔符,则解析该待上传文件时,会解析失败,直接上报解析错误。
可以理解的是,在实际工况中,服务端可以根据实际情况设置预设构造器,对此,本实施例不作限定。另外,第二预设解析库包括但不仅限于Apache Commons CSV解析库。
本申请实施例提供的文件安全校验方法,若待上传文件的文件类型为文本类型,可以通过本实施例提供的文件安全校验方法进行内容校验。具体为通过第二预设解析库对待上传文件进行解析,若在解析过程中未上报解析错误,则表明待上传文件通过内容校验,其中,文本类型对应的开源工具包括第二预设解析库。从而基于文本类型对应的开源工具对待上传文件的文件内容进行灵活且有效校验,将通过内容校验的待上传文件上传至服务端,保证了服务端的安全性。
下述为本申请装置实施例,可以用于执行本申请对应的方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请对应的方法实施例。
图9为本申请实施例提供的一种文件安全校验装置的结构示意图,如图9所示,本实施例提供的文件安全校验装置600,包括:
第一处理模块601,用于根据服务端的安全性需求配置校验开关,若校验开关为开启状态,对待上传文件进行后缀名校验。
第二处理模块602,用于若后缀名校验通过,基于待上传文件对应的开源工具对待上传文件的文件内容进行内容校验。
上传模块603,用于若内容校验通过,上传待上传文件至服务端。
在一种可能的设计中,第二处理模块602,具体用于:
通过分发模块将待上传文件按照文件类型进行分发。
其中,文件类型包括图片类型、电子表格类型、可移植文档类型以及文本类型中的一种。
对分发后的待上传文件利用对应的开源工具进行内容校验。
在一种可能的设计中,若待上传文件的文件类型为图片类型,第二处理模块602,包括:第一子模块。本实施例提供的第一子模块,用于:
判断待上传文件的文件头是否符合第一预设文件头,第一预设文件头为图片类型对应的固定字节;
若判断结果为是,使用图片处理类读取待上传文件,并在读取成功后,根据反馈对象判断待上传文件的文件内容是否符合图片内容格式,图片类型对应的开源工具包括图片处理类;
若是,则待上传文件通过内容校验。
在一种可能的设计中,第一子模块,还用于:
获取待上传文件的第一文件类型魔数,并确定第一文件类型魔数是否符合第一预设文件类型魔数,第一预设文件类型魔数为图片类型对应的头字节;
若是,则确定读取成功,并进一步读取待上传文件的内存信息,以得到反馈对象。
在一种可能的设计中,若待上传文件的文件类型为电子表格类型,第二处理模块602,包括:第二子模块。该第二子模块,用于:
通过预设接口读取待上传文件,若读取成功,获取待上传文件的源码信息,源码信息为待上传文件实例化后得到的代码信息,电子表格类型对应的开源工具包括预设接口;
根据源码信息确定待上传文件的文件数据被拆分后形成的多个数据段,每个数据段存储于对应的数据容器;
初始化各数据容器,得到待上传文件对应的文件字节码,若判断文件字节码中包含预设文件类型名,则待上传文件通过内容校验。
在一种可能的设计中,若待上传文件的文件类型为可移植文档类型,第二处理模块602,包括:第三子模块。该第三子模块,用于:
通过第一预设解析库对待上传文件进行数据解析,并当数据解析成功时得到待上传文件对应的文件对象,可移植文档类型对应的开源工具包括第一预设解析库;
根据文件对象获取待上传文件的页码总数,若判断页码总数符合预设页码数,则待上传文件通过内容校验。
在一种可能的设计中,第三子模块,还用于:
对待上传文件的文件头进行版本校验,若获取到预设版本号,则版本校验通过,预设版本号为可移植文档类型对应的版本信息;
获取待上传文件的文件尾信息,以通过第一预设解析库解析文件尾信息;
若文件尾信息解析成功,则根据文件尾信息获取文件目录对象,以根据文件目录对象获取待上传文件的各页面对象;
通过第一预设解析库对每个页面对象进行解析,若每个页面对象都解析成功,则数据解析成功。
在一种可能的设计中,若待上传文件的文件类型为文本类型,第二处理模块602,包括:第四子模块。该第四子模块,用于:
通过第二预设解析库对待上传文件进行解析,若解析过程中未上报解析错误,则待上传文件通过内容校验,文本类型对应的开源工具包括第二预设解析库。
在一种可能的设计中,第四子模块,还用于:
通过第二预设解析库读取待上传文件,判断待上传文件的分隔符规则是否满足预设分隔符,预设分隔符为预设构造器对应的各分隔符规则,预设构造器包括默认构造器或自定义构造器;
若是,不上报解析错误;
若否,上报解析错误。
在一种可能的设计中,第一处理模块601,还用于:
获取待上传文件的文件名后缀,若确定已获取到文件名后缀,判断预设黑名单中是否包含文件名后缀;
若否,则当白名单检验开关开启时,确定预设白名单中是否包含文件名后缀;
在确定预设白名单包含文件名后缀时,文件名后缀对应的待上传文件通过后缀名检验。
值得说明的,上述实施例提供的文件安全校验装置,可用于执行上述实施例提供的文件安全校验方法的各步骤,具体实现方式和技术效果类似,这里不再赘述。
本申请所提供的上述各装置实施例仅仅是示意性的,其中的模块划分仅仅是一种逻辑功能划分,实际实现时可以有另外的划分方式。例如多个模块可以结合或者可以集成到另一个系统。各个模块相互之间的耦合可以是通过一些接口实现,这些接口通常是电性通信接口,但是也不排除可能是机械接口或其它的形式接口。因此,作为分离部件说明的模块可以是或者也可以不是物理上分开的,既可以位于一个地方,也可以分布到同一个或不同设备的不同位置上。
图10为本申请提供的一种电子设备的结构示意图。如图10所示,该电子设备700可以包括:至少一个处理器701和存储器702。图10示出的是以一个处理器为例的电子设备。
存储器702,用于存放计算机程序。具体地,计算机程序可以包括程序代码,程序代码包括计算机操作指令。
存储器702可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
处理器701用于执行存储器702存储的计算机执行指令,以实现以上各方法实施例的方法。
其中,处理器701可能是一个中央处理器(central processing unit,简称为CPU),或者是特定集成电路(application specific integrated circuit,简称为ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路。
可选地,存储器702既可以是独立的,也可以跟处理器701集成在一起。当存储器702是独立于处理器701之外的器件时,电子设备700,还可以包括:
总线703,用于连接处理器701以及存储器702。总线可以是工业标准体系结构(industry standard architecture,简称为ISA)总线、外部设备互连(peripheralcomponent,PCI)总线或扩展工业标准体系结构(extended industry standardarchitecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果存储器702和处理器701集成在一块芯片上实现,则存储器702和处理器701可以通过内部接口完成通信。
本申请还提供了一种存储有计算机程序的非瞬时计算机可读存储介质,该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁盘或者光盘等各种可以存储程序代码的介质,具体的,该计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现上述各实施例中的文件安全校验方法。
本申请还提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各实施例中的文件安全校验方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。
Claims (11)
1.一种文件安全校验方法,其特征在于,包括:
根据服务端的安全性需求配置校验开关,若所述校验开关为开启状态,对待上传文件进行后缀名校验;
若所述后缀名校验通过,基于所述待上传文件对应的开源工具对所述待上传文件的文件内容进行内容校验;
若所述内容校验通过,上传所述待上传文件至所述服务端;
所述基于所述待上传文件对应的开源工具对所述待上传文件的文件内容进行内容校验,包括:
通过分发模块将所述待上传文件按照文件类型进行分发,所述文件类型包括图片类型、电子表格类型、可移植文档类型以及文本类型中的一种;
对分发后的所述待上传文件利用对应的所述开源工具进行所述内容校验;
若所述待上传文件的所述文件类型为所述图片类型,所述利用对应的所述开源工具进行所述内容校验,包括:
判断所述待上传文件的文件头是否符合第一预设文件头,所述第一预设文件头为所述图片类型对应的固定字节;
若判断结果为是,使用图片处理类读取所述待上传文件;
若使用所述图片处理类读取所述待上传文件成功,根据反馈对象获取所述待上传文件所对应文件内容的像素、长和宽中的一种,若获取到所述像素、长和宽中的一种,则所述待上传文件的文件内容符合图片内容格式,所述待上传文件通过所述内容校验;
若使用所述图片处理类读取所述待上传文件失败,则所述待上传文件未通过所述内容校验;
其中,所述反馈对象中封装有针对图片文件的操作方法,所述图片类型对应的所述开源工具包括所述图片处理类。
2.根据权利要求1所述的文件安全校验方法,其特征在于,所述使用图片处理类读取所述待上传文件,包括:
获取所述待上传文件的第一文件类型魔数,并确定所述第一文件类型魔数是否符合第一预设文件类型魔数,所述第一预设文件类型魔数为所述图片类型对应的头字节;
若是,则确定所述读取成功,并进一步读取所述待上传文件的内存信息,以得到所述反馈对象。
3.根据权利要求1所述的文件安全校验方法,其特征在于,若所述待上传文件的所述文件类型为所述电子表格类型,所述利用对应的所述开源工具进行所述内容校验,包括:
通过预设接口读取所述待上传文件,若读取成功,获取所述待上传文件的源码信息,所述源码信息为所述待上传文件实例化后得到的代码信息,所述电子表格类型对应的所述开源工具包括所述预设接口;
根据所述源码信息确定所述待上传文件的文件数据被拆分后形成的多个数据段,每个数据段存储于对应的数据容器;
初始化各数据容器,得到所述待上传文件对应的文件字节码,若判断所述文件字节码中包含预设文件类型名,则所述待上传文件通过所述内容校验。
4.根据权利要求1所述的文件安全校验方法,其特征在于,若所述待上传文件的所述文件类型为所述可移植文档类型,所述利用对应的所述开源工具进行所述内容校验,包括:
通过第一预设解析库对所述待上传文件进行数据解析,并当所述数据解析成功时得到所述待上传文件对应的文件对象,所述可移植文档类型对应的所述开源工具包括所述第一预设解析库;
根据所述文件对象获取所述待上传文件的页码总数,若判断所述页码总数符合预设页码数,则所述待上传文件通过所述内容校验。
5.根据权利要求4所述的文件安全校验方法,其特征在于,所述通过第一预设解析库对所述待上传文件进行数据解析,包括:
对所述待上传文件的文件头进行版本校验,若获取到预设版本号,则所述版本校验通过,所述预设版本号为所述可移植文档类型对应的版本信息;
获取所述待上传文件的文件尾信息,以通过所述第一预设解析库解析所述文件尾信息;
若所述文件尾信息解析成功,则根据所述文件尾信息获取文件目录对象,以根据所述文件目录对象获取所述待上传文件的各页面对象;
通过所述第一预设解析库对每个页面对象进行解析,若每个页面对象都解析成功,则所述数据解析成功。
6.根据权利要求1所述的文件安全校验方法,其特征在于,若所述待上传文件的所述文件类型为所述文本类型,则所述利用对应的所述开源工具进行所述内容校验,包括:
通过第二预设解析库对所述待上传文件进行解析,若解析过程中未上报解析错误,则所述待上传文件通过所述内容校验,所述文本类型对应的所述开源工具包括所述第二预设解析库。
7.根据权利要求6所述的文件安全校验方法,其特征在于,所述通过第二预设解析库对所述待上传文件进行解析,包括:
通过所述第二预设解析库读取所述待上传文件,判断所述待上传文件的分隔符规则是否满足预设分隔符,所述预设分隔符为预设构造器对应的各分隔符规则,所述预设构造器包括默认构造器或自定义构造器;
若是,不上报所述解析错误;
若否,上报所述解析错误。
8.根据权利要求1-7任一项所述的文件安全校验方法,其特征在于,所述对待上传文件进行后缀名校验,包括:
获取所述待上传文件的文件名后缀,若确定已获取到所述文件名后缀,判断预设黑名单中是否包含所述文件名后缀;
若否,则当白名单检验开关开启时,确定预设白名单中是否包含所述文件名后缀;
在确定所述预设白名单包含所述文件名后缀时,所述文件名后缀对应的所述待上传文件通过所述后缀名检验。
9.一种文件安全校验装置,其特征在于,包括:
第一处理模块,用于根据服务端的安全性需求配置校验开关,若所述校验开关为开启状态,对待上传文件进行后缀名校验;
第二处理模块,用于若所述后缀名校验通过,基于所述待上传文件对应的开源工具对所述待上传文件的文件内容进行内容校验;
上传模块,用于若所述内容校验通过,上传所述待上传文件至所述服务端;
所述第二处理模块,具体用于通过分发模块将所述待上传文件按照文件类型进行分发,所述文件类型包括图片类型、电子表格类型、可移植文档类型以及文本类型中的一种;
对分发后的所述待上传文件利用对应的所述开源工具进行所述内容校验;
若所述待上传文件的所述文件类型为所述图片类型,判断所述待上传文件的文件头是否符合第一预设文件头,所述第一预设文件头为所述图片类型对应的固定字节;
若判断结果为是,使用图片处理类读取所述待上传文件;
若使用所述图片处理类读取所述待上传文件成功,根据反馈对象获取所述待上传文件所对应文件内容的像素、长和宽中的一种,若获取到所述像素、长和宽中的一种,则所述待上传文件的文件内容符合图片内容格式,所述待上传文件通过所述内容校验;
若使用所述图片处理类读取所述待上传文件失败,则所述待上传文件未通过所述内容校验;
其中,所述反馈对象中封装有针对图片文件的操作方法,所述图片类型对应的所述开源工具包括所述图片处理类。
10.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的计算机程序;
其中,所述处理器配置为经由执行所述计算机程序来执行权利要求1-8中任一项所述的文件安全校验方法。
11.一种存储有计算机程序的非瞬时计算机可读存储介质,其特征在于,所述计算机程序被处理器执行时实现权利要求1-8中任一项所述的文件安全校验方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011584274.1A CN112738085B (zh) | 2020-12-28 | 2020-12-28 | 文件安全校验方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011584274.1A CN112738085B (zh) | 2020-12-28 | 2020-12-28 | 文件安全校验方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112738085A CN112738085A (zh) | 2021-04-30 |
CN112738085B true CN112738085B (zh) | 2023-08-08 |
Family
ID=75606712
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011584274.1A Active CN112738085B (zh) | 2020-12-28 | 2020-12-28 | 文件安全校验方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112738085B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113641999A (zh) * | 2021-08-27 | 2021-11-12 | 四川中电启明星信息技术有限公司 | 一种在web系统文件上传过程中的文件类型自动校验方法 |
CN114844669B (zh) * | 2022-03-17 | 2024-01-30 | 中国工商银行股份有限公司 | 数据的处理方法及装置 |
CN117081830B (zh) * | 2023-09-07 | 2024-04-05 | 苏州市职业大学(苏州开放大学) | 一种网络安全监测服务器 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108491475A (zh) * | 2018-03-08 | 2018-09-04 | 平安科技(深圳)有限公司 | 数据快速批量导入方法、电子装置及计算机可读存储介质 |
CN108985344A (zh) * | 2018-06-26 | 2018-12-11 | 四川斐讯信息技术有限公司 | 一种神经网络模型的训练集优化方法及系统 |
CN109361731A (zh) * | 2018-09-03 | 2019-02-19 | 中国平安人寿保险股份有限公司 | 一种文件上传的方法、存储介质和服务器 |
CN110096889A (zh) * | 2019-04-18 | 2019-08-06 | 深圳前海微众银行股份有限公司 | 文件检测方法、装置、设备及计算机可读存储介质 |
CN110532529A (zh) * | 2019-09-04 | 2019-12-03 | 北京明朝万达科技股份有限公司 | 一种文件类型的识别方法及装置 |
CN110825701A (zh) * | 2019-11-07 | 2020-02-21 | 深信服科技股份有限公司 | 一种文件类型确定方法、装置、电子设备及可读存储介质 |
-
2020
- 2020-12-28 CN CN202011584274.1A patent/CN112738085B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108491475A (zh) * | 2018-03-08 | 2018-09-04 | 平安科技(深圳)有限公司 | 数据快速批量导入方法、电子装置及计算机可读存储介质 |
CN108985344A (zh) * | 2018-06-26 | 2018-12-11 | 四川斐讯信息技术有限公司 | 一种神经网络模型的训练集优化方法及系统 |
CN109361731A (zh) * | 2018-09-03 | 2019-02-19 | 中国平安人寿保险股份有限公司 | 一种文件上传的方法、存储介质和服务器 |
CN110096889A (zh) * | 2019-04-18 | 2019-08-06 | 深圳前海微众银行股份有限公司 | 文件检测方法、装置、设备及计算机可读存储介质 |
CN110532529A (zh) * | 2019-09-04 | 2019-12-03 | 北京明朝万达科技股份有限公司 | 一种文件类型的识别方法及装置 |
CN110825701A (zh) * | 2019-11-07 | 2020-02-21 | 深信服科技股份有限公司 | 一种文件类型确定方法、装置、电子设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112738085A (zh) | 2021-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112738085B (zh) | 文件安全校验方法、装置、设备及存储介质 | |
CN101877696B (zh) | 在网络应用环境下重构错误响应信息的设备和方法 | |
US20090157716A1 (en) | Apparatus and method for acquiring data from memory of terminal | |
CN109815112B (zh) | 基于功能测试的数据调试方法、装置及终端设备 | |
CN111858376A (zh) | 请求报文生成方法和接口测试方法 | |
CN106843901B (zh) | 一种页面渲染和验证的方法和装置 | |
CN113760729A (zh) | 一种代码检测方法和装置 | |
CN104036194A (zh) | 一种应用程序中泄露隐私数据的漏洞检测方法及装置 | |
WO2014132145A1 (en) | Web service black box testing | |
CN111353143A (zh) | 敏感权限检测方法、装置及存储介质 | |
CN114185808A (zh) | 自动化测试方法、装置、电子设备及计算机可读存储介质 | |
CN114398673A (zh) | 应用程序的合规检测方法、装置、存储介质与电子设备 | |
CN104052630A (zh) | 对网站执行验证的方法和系统 | |
CN110855718B (zh) | 企业用户的注册方法、装置、电子设备及计算机可读介质 | |
US9870216B2 (en) | Application providing method including extracting and converting packaged application | |
CN116501929A (zh) | 电子凭证生成方法、装置及电子设备 | |
CN108052842B (zh) | 签名数据的存储、验证方法及装置 | |
CN112131127B (zh) | 接口测试方法、装置、系统及电子设备 | |
CN114168108A (zh) | 代码合并方法、装置、电子设备和计算机可读存储介质 | |
CN114071066A (zh) | 应用于大数据视频会议的信息处理方法及服务器 | |
US8223404B2 (en) | Image forming system, computer readable recording medium storing image forming program and image forming method | |
US20150277858A1 (en) | Performance evaluation device, method, and medium for information system | |
CN113760706B (zh) | 网页调试方法及装置 | |
CN115577328B (zh) | 软件侵权取证方法、系统、设备及介质 | |
CN116361748B (zh) | 一种软件供应链安全检测方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |