Fckeditor 2.6.3 (ASP版) 修改(二) ——检测上传文件是否为木马

来源:互联网 发布:linux telnet 命令 编辑:程序博客网 时间:2024/06/04 00:04

       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进行记录,保存到文本文件或者数据库中。

原创粉丝点击