服务热线
upfile_flash.asp 漏洞导致未经授权的用户可以直接上传木马或后门程序到用户空间里。因此需要修补下 upfile_flash.asp 文件的代码,加入过滤程式。综合了下网上分享的文章做了下改进!
代码如下:
<%
'先作一个文件名检验函数。过虑掉所有有危险的东西。
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(1,savefilename,fExt(i),1)>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),"")
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)&left(ranNum,3)&"."&fileExt
if file.FileSize>0 then
call chkfileExt(FileName)
'这里我们检验的是整个保存地址。如果存在非法字符就报警并停止。
file.SaveToFile Server.mappath(FileName)
response.write ""
end if
set file=nothing
next
set upload=nothing
end if
%>