本发明涉及信息安全技术领域,具体涉及一种在文件上传时实现自动检测文件安全性的方法及系统。
背景技术:
文件上传在系统的建设中应用十分广泛,传统的文件上传技术仅仅对文件的格式及大小做了一些限制,并没有从文件内容进行分析,这样还是容易被不法分子所利用,不法分子通过文件伪装上传webshall以及其他木马文件,一旦木马文件被执行,将会对服务器以及应用带来严重危害。
技术实现要素:
有鉴于此,为解决上述技术问题,本发明的目的在于提出能够提升文件上传安全性的在文件上传时实现自动检测文件安全性的方法及系统。
所采用的技术方案为:
一种在文件上传时实现自动检测文件安全性的方法,包括如下步骤:
s1.文件上传时,对文件进行基础性校验,检查文件格式是否符合常规格式以及检查文件大小是否符合不超过阈值;如果任一不符合,则终止上传;如果全部符合,则进入s2;
s2.读取正在上传中的文件,将文件字节流转换成字符串流;然后进入s3;
s3.对正在上传中的文件进行扫描分析,判断扫描的文件内容是否符合jsp文件特征、aspx文件特征、php文件特征或html文件特征,如果符合,则终止上传;如果全部不符合,则上传成功。
进一步地,s1中,常规格式是doc、docx、xls、xlsx、pdf、txt、jpg、gif、png、zip、rar、jpg和jpeg的一种或两种以上。
进一步地,s2中,所述阈值为1-10m。
一种在文件上传时实现自动检测文件安全性的系统,包括:
校验模块,其用于检查文件格式是否符合常规格式以及检查文件大小是否不超过阈值;
读取模块,其用于将文件字节流转换成字符串流;
扫描模块,其用于对读取模块的字符串流进行扫描;
识别模块,其用于判断扫描的文件内容是否符合jsp文件特征、aspx文件特征、php文件特征或html文件特征,
处理模块,其用于对检验模块的检验结果和识别模块的识别结果作出处理,对检验模块,如果任一不符合,则终止上传;如果全部符合,则进入识别模块;对识别模块,如果任一符合,则终止上传;如果全部不符合,则上传成功。
进一步地,所述识别模块包括jsp文件特征识别模块、aspx文件特征识别模块、php文件特征识别模块和html文件特征识别模块。
本发明的有益效果在于:
本发明通过文件上传技术以及文件扫描技术进行结合,实现文件上传时就自动对文件安全性进行扫描,一旦发现文件存在安全性问题,立即终止上传,从而可以提升文件上传安全性。如原本技术文件上传安全性为50分,可以通过此技术提升至70分,从而优化现有文件上传技术,使得文件上传更加可靠、安全。
附图说明
为了更清楚地说明本发明,下面将对具体实施方式中所用到的附图作简单地附图说明。
图1为一种在文件上传时实现自动检测文件安全性的方法的流程图。
图2为实施例1的文章编辑页的第一种显示界面图;
图3为实施例1的文章编辑页的第二种显示界面图;
图4为实施例1的文章编辑页的第三种显示界面图;
图5为实施例1的文章编辑页的第四种显示界面图。
具体实施方式
下面结合附图,对本发明进行清楚、完整地描述,但本发明的保护范围并不局限于此。
参见图1所示,一种在文件上传时实现自动检测文件安全性的方法,包括如下步骤:
s1.文件上传时,对文件进行基础性校验,检查文件格式是否符合常规格式以及检查文件大小是否符合不超过阈值;如果任一不符合,即不符合常规格式或超过阈值,则终止上传;如果全部符合,即符合常规格式,也不超过阈值;则进入s2;
s2.读取正在上传中的文件,将文件字节流转换成字符串流;例如使用inputstreamreader是字节流通向字符流的桥梁。
例如//定义一个指向d:/text.txt的字节流
fileinputstreamfileinputstream=new
fileinputstream("d:/text.txt");
//字节流转换成inputstreamreader
inputstreamreaderinputstreamreader=new
inputstreamreader(fileinputstream);
//inputstreamreader转换成带缓存的bufferedreader
bufferedreaderbufferedreader=new
bufferedreader(inputsteamreader);
然后进入s3;
s3.对正在上传中的文件进行扫描分析,判断扫描的文件内容是否符合jsp文件特征、aspx文件特征、php文件特征或html文件特征,如果符合,则终止上传;如果全部不符合,则上传成功。
上述步骤s1中,常规格式一般是doc、docx、xls、xlsx、pdf、txt、jpg、gif、png、zip、rar、jpg和jpeg中的一种或两种以上;以全部列举的常规格式为例,检查文件格式是否符合doc、docx、xls、xlsx、pdf、txt、jpg、gif、png、zip、rar、jpg或jpeg格式,如果全部不符合,也即文件格式为非[doc、docx、xls、xlsx、pdf、txt、jpg、gif、png、zip、rar、jpg、jpeg]格式,则终止上传;
上述步骤s1中,阈值为预置的临界值,包括但不限于1-10m中的任一大小值,例如包括但不限于为1m、2m、3m、5m或10m,实际大小可以根据需要设置,例如也可以设置为500kb。检查文件大小是否符合不大于阈值,例如以阈值为10m为例说明,如果大于10m,则终止上传。
上述步骤s1中,检查文件格式是否符合常规格式以及检查文件大小是否超过阈值的顺序,无论前后都是可以的,即可以先检查文件格式是否符合常规格式,然后再检查文件大小是否超过阈值;也可以先检查文件大小是否超过阈值,然后再检查文件格式是否符合常规格式。图1仅仅示出了其中一种顺序。
上述步骤s3中,jsp文件特征、aspx文件特征、php文件特征和html文件特征的判断可以按任意顺序逐步进行。例如,可以按照jsp文件特征、aspx文件特征、php文件特征和html文件特征的顺序依次判断,也可以按照其他顺序,如按照spx文件特征、html文件特征、php文件特征、aspx文件特征的顺序依次判断;或者与第一种顺序正好相反的顺序进行判断均是可以的。只要将jsp文件特征、aspx文件特征、php文件特征和html文件特征这四个文件特征进行完全地逐个判断即可。图1仅仅示出了其中一种顺序。
下面对jsp文件特征、aspx文件特征、php文件特征和html文件特征具体说明如下:
(1).jsp(javaserverpages)是由sunmicrosystems公司倡导、许多公司参与一起建立的一种动态网页技术,经分析如属于jsp文件特征,则页面内容必定包含以下代码片段:
<%@pagelanguage="java"import="java.util.*"
pageencoding="iso-8859-1"%>
(2).aspx文件特征,一般包含以下代码片段:
<%@pagelanguage="c#"autoeventwireup="true"
codebehind="edit.aspx.cs"
inherits="dtcms.web.admin.apply.credit.edit"%>
(3).php文件特征,一般判断文件开头是否包含以下代码片段:
<?php
//此处是php代码
?>
(4).html文件特征,一般包含以下标记:
<html>
<head>
<title>我的第一个html页面</title>
</head>
<body>
<p>body元素的内容会显示在浏览器中。</p>
<p>title元素的内容会显示在浏览器的标题栏中。</p>
</body>
</html>
相应地,一种在文件上传时实现自动检测文件安全性的系统,包括:
校验模块,其用于检查文件格式是否符合常规格式以及检查文件大小是否不超过阈值;
读取模块,其用于将文件字节流转换成字符串流;
扫描模块,其用于对读取模块的字符串流进行扫描;
识别模块,其用于判断扫描的文件内容是否符合jsp文件特征、aspx文件特征、php文件特征或html文件特征,
处理模块,其用于对检验模块的检验结果和识别模块的识别结果作出处理,对检验模块的处理:例如校验模块检查文件格式是否符合常规格式以及检查文件大小是否不超过阈值后,如果任一不符合,则终止上传;如果全部符合,则进入识别模块;对识别模块的处理:例如识别模块判断扫描的文件内容是否符合jsp文件特征、aspx文件特征、php文件特征或html文件特征后,如果任一符合,则终止上传;如果全部不符合,则上传成功。
其中,校验模块为文件基本校验组件,也即用于主要负责判断文件后缀以及文件大小是否符合要求。
读取模块为文件内容读取组件,也即用于主要负责将二进制流转成字符串流。
识别模块包括jsp文件特征识别模块、aspx文件特征识别模块、php文件特征识别模块和html文件特征识别模块。
其中jsp文件特征识别模块为jsp文件识别组件,用于主要负责通过文件内容以及jsp文件特征,识别文件是否为jsp文件。
aspx文件特征识别模块为aspx文件识别组件,用于主要负责根据aspx文件特征以及文件内容,识别文件是否为aspx文件。
php文件特征识别模块为php文件识别组件,用于主要负责根据php文件特征以及文件内容,识别文件是否为php文件。
html文件特征识别模块为html文件识别组件,用于主要负责根据html文件特征以及文件内容,识别文件是否为html文件。
下面以一种实际应用的界面图为例,进一步说明本发明:
实施例1
一种在文件上传时实现自动检测文件安全性的方法,包括如下步骤:
s1.文件上传时,对文件进行基础性校验,检查文件格式是否符合常规格式以及检查文件大小是否符合不超过阈值;参见图2所示的文章编辑页的界面图,在界面中显示提示信息:只能上传jpg,png文件,且不超过500kb.
如果任一不符合,即不符合常规格式或超过阈值,则终止上传;如果全部符合,即既符合常规格式(为jpg或png文件),也不超过阈值(为500kb);则进入s2;
s2.读取正在上传中的文件,将文件字节流转换成字符串流;然后进入s3;
s3.对正在上传中的文件进行扫描分析,判断扫描的文件内容是否符合jsp文件特征、aspx文件特征、php文件特征或html文件特征,如果符合,则终止上传;如果全部不符合,则上传成功。参见图3所示,当检测上传的文件经扫描确认为jsp文件,在界面中显示提示信息:经扫描,此文件为java文件,禁止上传!参见图4所示,当检测上传的文件经扫描确认为.net文件,在界面中显示提示信息:此文件为.net文件,禁止上传!参见图5所示,当扫描没有发现问题以后,文章保存成功,在界面中显示提示信息:恭喜你,文章保存成功!
使用本方法后,使得文件上传更加可靠、安全。
上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施例的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施例或变更均应包含在本发明的保护范围之内。