asp防止上传图片木马原理解析
首先判断文件大小:
iffile.filesize<10then
Response.Write("<script>alert('您没有选择上传文件')</script>")
Response.Write("<script>history.go(-1)</script>")
Response.End()
endif
将文件上传到服务器后,判断用户文件中的危险操作字符:
setMyFile=server.CreateObject("Scripting.FileSystemObject")
setMyText=MyFile.OpenTextFile(FilePath,1)'读取文本文件
sTextAll=lcase(MyText.ReadAll)
MyText.close
setMyFile=nothing
sStr=".getfolder|.createfolder|.deletefolder|.createdirectory|.deletedirectory|.saveas
|wscript.shell|script.encode|server.|.createobject|execute|activexobject|language="
sNoString=split(sStr,"|")
fori=0toubound(sNoString)
ifinstr(sTextAll,sNoString(i))then
setfiledel=server.CreateObject("Scripting.FileSystemObject")
filedel.deletefileFilePath
setfiledel=nothing
Response.Write("<script>alert('您上传的文件有问题,上传失败');window.close();</script>")
Response.End()
endif
next
如何防止木马性图片上传
这个代码我检验过没有问题,可以阻挡木马性图片的上传
<%
'***************************************************************
'CheckFileType函数用来检查文件是否为图片文件
'参数filename是本地文件的路径
'如果是文件jpeg,gif,bmp,png图片中的一种,函数返回true,否则返回false
'***************************************************************
constadTypeBinary=1
dimjpg(1):jpg(0)=CByte(&HFF):jpg(1)=CByte(&HD8)
dimbmp(1):bmp(0)=CByte(&H42):bmp(1)=CByte(&H4D)
dimpng(3):png(0)=CByte(&H89):png(1)=CByte(&H50):png(2)=CByte(&H4E):png(3)=CByte(&H47)
dimgif(5):gif(0)=CByte(&H47):gif(1)=CByte(&H49):gif(2)=CByte(&H46):gif(3)=CByte(&H39):gif(4)=CByte(&H38):gif(5)=CByte(&H61)
Response.WriteCheckFileType(Server.MapPath("2.gif"))
functionCheckFileType(filename)
onerrorresumenext
CheckFileType=false
dimfstream,fileExt,stamp,i
fileExt=mid(filename,InStrRev(filename,".")+1)
setfstream=Server.createobject("ADODB.Stream")
fstream.Open
fstream.Type=adTypeBinary
fstream.LoadFromFilefilename
fstream.position=0
selectcasefileExt
case"jpg","jpeg"
stamp=fstream.read(2)
fori=0to1
ifascB(MidB(stamp,i+1,1))=jpg(i)thenCheckFileType=trueelseCheckFileType=false
next
case"gif"
stamp=fstream.read(6)
fori=0to5
ifascB(MidB(stamp,i+1,1))=gif(i)thenCheckFileType=trueelseCheckFileType=false
next
case"png"
stamp=fstream.read(4)
fori=0to3
ifascB(MidB(stamp,i+1,1))=png(i)thenCheckFileType=trueelseCheckFileType=false
next
case"bmp"
stamp=fstream.read(2)
fori=0to1
ifascB(MidB(stamp,i+1,1))=bmp(i)thenCheckFileType=trueelseCheckFileType=false
next
endselect
fstream.Close
setfseteam=nothing
iferr.number<>0thenCheckFileType=false
endfunction
%>
以上就是asp防止上传图片木马原理解析,希望对大家的学习有所帮助。