php上传文件过滤_文件上传过滤

'先作一个文件名检验函数。过虑掉所有有危险的东西。

Function chkfileExt(savefilename)

feifaExt="html|htm|php|php2|php3|php4|php5|phtml|pwml|inc|asp|aspx|

ascx|jsp|cfm|cfc|pl|bat|exe|com|dll|vbs|js|reg|cgi|htaccess|asis"

fExt = Split(feifaExt, "|")

For i = 0 To UBound(fExt)

If instr(savefilename,fExt(i))>0 Then '检测是否存在非法字符。

response.write("非法的文件格式!")

Response.End

End If

Next

End Function

set upload=new upload_file

if upload.form("act")="uploadfile" then

filepath=trim(upload.form("filepath"))

filelx=trim(upload.form("filelx"))

filepath=replace(filepath,chr(0),"")

'注意这里。替换掉chr(0)。该程序是把木马名称放在这里的。如果你只检验扩展名是没有用的。程序会传一个变量就是diy.asp&chr(0) 这个chr(0)是什么我不太清楚好像是一个停止符号。ASCII码表中对应的是“NUT”。大家可以试一下 response.write "abc.asp"&chr(0)&"03i320923.jpg" 显示的结果就是“abc.asp” 该程序就是通过这种办法绕过去的。

i=0

for each formName in upload.File

set file=upload.File(formName)

fileExt=lcase(file.FileExt) '得到的文件扩展名不含有.

if file.filesize>(1024*1024) then

response.write "最大只能上传 1M 的文件! [ 重新上传 ]"

response.end

end if

randomize

ranNum=int(90000*rnd)+10000

filename=filepath&year(now)&"_"&month(now)&"_"&day(now)&"_"&hour(now)&"_"&minute(now)&"_"&second(now)&"_"&ranNum&"."&fileExt

if file.FileSize>0 then

call chkfileExt(FileName)

'这里我们检验的是整个保存地址。如果存在非法字符就报警并停止。

file.SaveToFile Server.mappath(FileName)

response.write "

response.write "window.opener.document."&upload.form("FormName")&"."&upload.form("EditName")&".value='"&FileName&"';"

response.write "window.alert(""文件上传成功!请不要修改生成的链接地址!"");"

response.write "window.close();"

response.write ""

end if

set file=nothing

next

set upload=nothing

end if

%>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值