Fckeditor 2.6.3 (ASP版)——检测上传文件是否为木马
2011-08-26 11:16
381 查看
Fckeditor 2.6.3 已经对上传文件的类型进行严格的限定,可以防止大部分的木马的上传。但是在使用中偶发现有些图片木马仍能够上传。所以本文的目的是进一步增强Fckeditor 对木马的检测。
和添加上传达小限制相同,主要是对fckeditor\editor\filemanager\connectors\asp文件下的config.asp和commands.asp的修改。
1.config.asp的修改
在config.asp 文嘉最后面添加下面的函数,对于木马的检测主要是通过这个函数实现的
Function CheckFileSafe(sFilePath)
'使用文本方式打开文件,检测文本中有无危险代码
Dim CheckFso,ObjReadFile,sFileTextAll,IsFileSafe,sNotSafe,NotSafeList,ListLoop
'危险字符串
sNotSafe=".getfolder|.createfolder|.deletefolder|.createdirectory|.deletedirectory|.saveas|wscript.shell|script.encode|server.|.createobject|execute|activexobject|language="
NotSafeList=Split(sNotSafe,"|")
IsFileSafe=True
Set CheckFso=Server.CreateObject( "Scripting.FileSystemObject" )
'判断文件是否存在
If CheckFso.FileExists(sFilePath) then
'以文本方式读取文件,并转换为小写
Set ObjReadFile = CheckFso.OpenTextFile(sFilePath, 1)
sFileTextAll=Lcase(ObjReadFile.ReadAll)
ObjReadFile.Close
'校验文本中是否存在危险字符
For ListLoop=0 to Ubound(NotSafeList)
If Instr(sFileTextAll,NotSafeList(ListLoop))>0 then
IsFileSafe=False
Exit For
End If
Next
End If
Set CheckFso=Nothing
CheckFileSafe=IsFileSafe
End Function
函数有一个字符串型参数sFilePath,用来传递文件真实地址,如d:\webroot\xx.jpg
函数将上传的文件以文本方式打开,判断是否含有ASP木马常用的字符串,若含有则函数返回False,否则返回True
2.commands.asp的修改
对commands.asp的修改主要是调用CheckFileSafe函数,检验上传的文件是否为木马,若为木马则将上传的文件删除。修改如下:
在下列语句
oUploader.SaveAs "NewFile", sFilePath
If oUploader.ErrNum > 0 Then sErrorNumber = "202"
之后添加
if Not CheckFileSafe(sFilePath) then
sErrorNumber = "205"
oFSO.DeleteFile sFilePath
End If
这里定义了一个错误代码205,提示用户上传的文件为木马,禁止上传。
3.添加错误代码205的提示信息
这里以上传类型为图片为例说明
修改fckeditor\editor\dialog\fck_image文件下的fck_image.js
在switch ( errorNumber )中添加下列语句。
case 205:
alert( '上传文件可能为木马,不允许上传!' ) ;
return ;
修改完成,可以尝试建立一个文本文件,添加几个危险代码试试看。嘿嘿。另外,可以对上传木马的客户端IP进行记录,保存到文本文件或者数据库中。
和添加上传达小限制相同,主要是对fckeditor\editor\filemanager\connectors\asp文件下的config.asp和commands.asp的修改。
1.config.asp的修改
在config.asp 文嘉最后面添加下面的函数,对于木马的检测主要是通过这个函数实现的
Function CheckFileSafe(sFilePath)
'使用文本方式打开文件,检测文本中有无危险代码
Dim CheckFso,ObjReadFile,sFileTextAll,IsFileSafe,sNotSafe,NotSafeList,ListLoop
'危险字符串
sNotSafe=".getfolder|.createfolder|.deletefolder|.createdirectory|.deletedirectory|.saveas|wscript.shell|script.encode|server.|.createobject|execute|activexobject|language="
NotSafeList=Split(sNotSafe,"|")
IsFileSafe=True
Set CheckFso=Server.CreateObject( "Scripting.FileSystemObject" )
'判断文件是否存在
If CheckFso.FileExists(sFilePath) then
'以文本方式读取文件,并转换为小写
Set ObjReadFile = CheckFso.OpenTextFile(sFilePath, 1)
sFileTextAll=Lcase(ObjReadFile.ReadAll)
ObjReadFile.Close
'校验文本中是否存在危险字符
For ListLoop=0 to Ubound(NotSafeList)
If Instr(sFileTextAll,NotSafeList(ListLoop))>0 then
IsFileSafe=False
Exit For
End If
Next
End If
Set CheckFso=Nothing
CheckFileSafe=IsFileSafe
End Function
函数有一个字符串型参数sFilePath,用来传递文件真实地址,如d:\webroot\xx.jpg
函数将上传的文件以文本方式打开,判断是否含有ASP木马常用的字符串,若含有则函数返回False,否则返回True
2.commands.asp的修改
对commands.asp的修改主要是调用CheckFileSafe函数,检验上传的文件是否为木马,若为木马则将上传的文件删除。修改如下:
在下列语句
oUploader.SaveAs "NewFile", sFilePath
If oUploader.ErrNum > 0 Then sErrorNumber = "202"
之后添加
if Not CheckFileSafe(sFilePath) then
sErrorNumber = "205"
oFSO.DeleteFile sFilePath
End If
这里定义了一个错误代码205,提示用户上传的文件为木马,禁止上传。
3.添加错误代码205的提示信息
这里以上传类型为图片为例说明
修改fckeditor\editor\dialog\fck_image文件下的fck_image.js
在switch ( errorNumber )中添加下列语句。
case 205:
alert( '上传文件可能为木马,不允许上传!' ) ;
return ;
修改完成,可以尝试建立一个文本文件,添加几个危险代码试试看。嘿嘿。另外,可以对上传木马的客户端IP进行记录,保存到文本文件或者数据库中。
相关文章推荐
- Fckeditor 2.6.3 (ASP版) 修改(二) ——检测上传文件是否为木马
- FCKEditor 2.6.3 Asp.net上传文件没有权限解决
- Asp.net FCKEditor 2.6.3 上传文件没有权限解决方法
- Fckeditor 2.6.3 (ASP版) 修改(一) ——添加上传文件大小限制
- FCKEditor 2.6.3 Asp.net上传文件没有权限解决
- Fckeditor 2.6.3 (ASP版)——添加上传文件大小限制
- Asp.net FCKEditor 2.6.3 上传文件没有权限解决方法
- asp 判断上传的文件名称中是否带有中文
- ASP.NET修改FCKeditor中asp.net上传文件时的命名
- ASP.NET杜绝文件上传漏洞的代码(通过检测文件的头部编码)
- FCKEditor 2.6.4 Asp.net上传文件没有权限解决
- FCKeditor_2 6 3 图片上传 重命名图片名称 删除上传后 文件 .NET技术 ASP.NET
- FCKeditor 上传修改,添加对文件的类型以及大小的限制(ASP.NET C#)
- 解决asp.net中使用FckEditor上传文件,中文名称乱码的问题
- ASP.NET环境下配置FCKEditor并上传图片及其它文件
- 化境文件上传修改版.可检测任何木马
- FCKeditor 上传修改,添加对文件的类型以及大小的限制(ASP.NET C#)
- ASP.NET环境下配置FCKEditor并上传图片及其它文件
- ASP+XMLHTTP检测文件是否存在(掉链)
- asp.net FileUpload 判断上传文件是否为图片