解决ASP(图像)上传漏洞的方法(2)

复制代码 代码如下:
file.SaveAs Server.mappath(filename)   '保存文件 
If not CheckFileType(Server.mappath(filename)) then 
    response.write "错误的图像格式" 
    Set fso = CreateObject("Scripting.FileSystemObject") 
    Set ficn = fso.GetFile(Server.mappath(filename)) 
    ficn.delete 
    set ficn=nothing 
    set fso=nothing 
    response.end 
end if 
则是先将文件上传,接着立马使用自定义函数判断文件图像类型的吻合性,FSO做出删除该文件的操作。
ASP上传漏洞还利用"\0"对filepath进行手脚操作
http://www.cnbruce.com/blog/showlog.asp?cat_id=32&log_id=635 
针对这样的情况可使用如下函数
复制代码 代码如下:
function TrueStr(fileTrue) 
 str_len=len(fileTrue) 
 pos=Instr(fileTrue,chr(0)) 
 if pos=0 or pos=str_len then 
    TrueStr=true 
 else 
    TrueStr=false 
 end if 
end function 
接着就可判断后再做文件的上传
复制代码 代码如下:
if TrueStr(filename)=false then 
    response.write "非法文件" 
    response.end 
end if 
file.SaveAs Server.mappath(filename)