Asp教程

通过asp实例结合结合ACCESS,MSSQL来更好的深入Asp学习 - 爬坡者

« 飞腾工作室超强数据检测过滤函数replace()函数的另类用法 »

自动检测上传文件是否含有非法代码

[来源:飞腾设计网www.feitec.com内容,转载请注明出处]

在使用无惧上传V2.0的过程中,我发现它并不能识别是真图片,还是假图片(比如用一个ASP文件,改名为jpg,就能轻松上传成功),这可是一个很大的漏洞啊。

经过仔细研究,我找到了一个解决方法:先将文件上传,然后利用FSO,采用读取文本文件的方法,读出该文件的内容,如果含有事先定义的非法字符如cookie、session等,就可判断此文件为非图片文件,并自动删除此文件,从而达到禁止上传非法文件的目的。

  Dim objFSO,objTS,strText,ComStr,i
    filebb=updir&upfile.file("img").filename '文件路径
    Set objFSO=Server.CreateObject("Scripting.FileSystemObject")
    If objFSO.FileExists(Server.MapPath(filebb)) Then
     Set objTS=objFSO.OpenTextFile(Server.MapPath(filebb),1) '以文本文件方式读取文件
     strText=lcase(objTS.ReadAll) '全文读取,并转换为小写
     objTS.Close
     ComStr="cookie|.getfolder|.createfolder|.deletefolder|.createdirectory|.deletedirectory"
     ComStr=ComStr&"|.saveas|wscript.shell|script.encode|folderfath|session" '禁止字符
     strArray=split(ComStr,"|")
     for i=0 to ubound(strArray)
    if instr(strText,strArray(i))<>0 then
     objFSO.DeleteFile Server.MapPath(filebb),True '删除文件
     response.write"非法文件,禁止上传  [<a href='upload.asp'>重新上传</a>]"
     response.end
    end if
     next
     Set objFSO=nothing
    else
     response.write"该文件不存在"
    end if 
    呵呵,使用此方法,果然解决了大问题。但要注意的是上传的文件不能过大,如果过大的话,可想而知,对系统资源的浪费是惊人的,建议设置上传文件大小为300K左右。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Spirit Build 80710

Copyright 2007-2008 papozhe.com [asp教程] All Rights Reserved.
浙ICP备07030537号
免责申明:所有文章除特别声明,均来自网上,主要为学习用!内容仅供参考,版权归原作者。如侵犯您利益,请来信告知.
Email:papozhe$Gmail.com QQ:76336503