因胸联盟 发表于 2015-1-16 22:49:20

ASP教程之办理ASP(图象)上传毛病的办法

asp可以轻松地实现对页面内容的动态控制,根据不同的浏览者,显示不同的页面内容。而浏览者一点觉察不出来,就像为他专门制作的页面一样。使用各种各样的组件,asp可以完成无比强大的功能。办理|上传|上传毛病常常传闻的ASP上传毛病,便是将一些木马文件修正后缀名(修正为图象文件后缀),举行上传。

针对此情形利用以下函数举行分辨:

<%
****************************************
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)

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.number0thenCheckFileType=false
endfunction
%>
那末在使用的时分
CheckFileType(server.mappath("cnbruce.jpg"))
大概
CheckFileType("F:/web/164/images/cnbruce.jpg"))

归正便是检检验证当地物理地点的图象文件范例,前往true或false值

以是这个情形使用在图象上传中,今朝的举措是先同意该“伪图象”文件的上传,接着利用以上的自界说函数判别该文件是不是切合图象的标准,如果木马假装的图象文件则FSO删除之,好比:

file.SaveAsServer.mappath(filename)保留文件
IfnotCheckFileType(Server.mappath(filename))then
response.write"毛病的图象格局"
Setfso=CreateObject("Scripting.FileSystemObject")
Setficn=fso.GetFile(Server.mappath(filename))
ficn.delete
setficn=nothing
setfso=nothing
response.end
endif
则是先将文件上传,接着立马利用自界说函数判别文件图象范例的符合性,FSO做出删除该文件的操纵。

ASP上传毛病还使用""对filepath举行四肢举动操纵

针对如许的情形可以使用以下函数

functionTrueStr(fileTrue)
str_len=len(fileTrue)
pos=Instr(fileTrue,chr(0))
ifpos=0orpos=str_lenthen
TrueStr=true
else
TrueStr=false
endif
endfunction
接着便可判别后再做文件的上传

ifTrueStr(filename)=falsethen
response.write"不法文件"
response.end
endif

file.SaveAsServer.mappath(filename)

关于upfile.asp的全新内容以下:<%@LANGUAGE="VBSCRIPT"CODEPAGE="936"%>
<!--#includefile="upload.inc"-->
<html>
<head>
<title>文件上传</title>
<metahttp-equiv="content-type"content="text/html;charset=gb2312">
</head>
<body>
<%
onerrorresumenext
dimupload,f_folder,file,formPath,iCount,filename,fileExt,filesizemin,filesizemax
***************************************
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)
functionCheckFileType(filename)
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
ifasc
Windows本身的所有问题都会一成不变的也累加到了它的身上。安全性、稳定性、跨平台性都会因为与NT的捆绑而显现出来;

谁可相欹 发表于 2015-1-20 05:11:20

接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。

因胸联盟 发表于 2015-1-28 16:54:18

如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助:

灵魂腐蚀 发表于 2015-2-5 21:06:18

封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。

简单生活 发表于 2015-2-13 13:27:16

Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件

分手快乐 发表于 2015-3-3 22:12:18

Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write

活着的死人 发表于 2015-3-18 16:53:37

从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了

只想知道 发表于 2015-3-26 07:01:39

跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组
页: [1]
查看完整版本: ASP教程之办理ASP(图象)上传毛病的办法