亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來(lái)到思海網(wǎng)絡(luò),我們將竭誠(chéng)為您提供優(yōu)質(zhì)的服務(wù)! 誠(chéng)征網(wǎng)絡(luò)推廣 | 網(wǎng)站備案 | 幫助中心 | 軟件下載 | 購(gòu)買流程 | 付款方式 | 聯(lián)系我們 [ 會(huì)員登錄/注冊(cè) ]
促銷推廣
客服中心
業(yè)務(wù)咨詢
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352289
點(diǎn)擊這里給我發(fā)消息  81721488
有事點(diǎn)擊這里…  376585780
有事點(diǎn)擊這里…  872642803
有事點(diǎn)擊這里…  459248018
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  380791050
技術(shù)支持
有事點(diǎn)擊這里…  714236853
有事點(diǎn)擊這里…  719304487
有事點(diǎn)擊這里…  1208894568
有事點(diǎn)擊這里…  61352289
在線客服
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  983054746
有事點(diǎn)擊這里…  893984210
當(dāng)前位置:首頁(yè) >> 技術(shù)文章 >> 文章瀏覽
技術(shù)文章

upfile.asp上傳漏洞的修補(bǔ)方法

添加時(shí)間:2011-2-11  添加: admin 

修補(bǔ)upfile.asp上傳漏洞
ASP文件相關(guān)的一些函數(shù)。有以下幾個(gè):
1. 得到文件擴(kuò)展名
2. ASP上傳文件漏洞檢測(cè)
3. 格式化顯示文件大小
4. asp檢測(cè)上傳圖片是否為真實(shí)圖片
5. 上傳文件擴(kuò)展名檢測(cè)
6. 取得文件對(duì)應(yīng)的圖標(biāo)
7. 下載文件等相關(guān)函數(shù)

程序代碼:
<%
’*******************************************************
’作 用: 得到文件擴(kuò)展名
’函數(shù)名: GetFileExt(fileTrue)
’參 數(shù): sFileName 文件名
’返回值: 返回文件擴(kuò)展名
’*******************************************************
function GetFileExt(sFileName)
GetFileExt = UCase(Mid(sFileName,InStrRev (sFileName, “.”)+1)) ’下面有附
End function

’*******************************************************
’作 用: ASP上傳漏洞 “\0″ 防范
’函數(shù)名: TrueStr(fileTrue)
’參 數(shù): sFileName 文件名
’返回值: 合法文件返回 True ,否則返回False
’*******************************************************
function IsTrueFileName(sFileName)
dim str_len,pos
str_len=len(sFileName)
pos=Instr(sFileName,chr(0))
If pos=0 or pos=str_len then
IsTrueFileName = true
else
IsTrueFileName = false
End If
End function

’*******************************************************
’作 用: 檢測(cè)上傳的圖片文件(jpeg,gif,bmp,png)是否真的為圖片
’函數(shù)名: TrueStr(fileTrue)
’參 數(shù): sFileName 文件名(此處文件名是文件夾的物理全路徑)
’返回值: 確實(shí)為圖片文件則返回 True ,否則返回False
’*******************************************************
function IsImgFile(sFileName)
const adTypeBinary=1
dim return
dim jpg(1):jpg(0)=CByte(&HFF):jpg(1)=CByte(&HD8)
dim bmp(1):bmp(0)=CByte(&H42):bmp(1)=CByte(&H4D)
dim png(3):png(0)=CByte(&H89):png(1)=CByte(&H50):png(2)=CByte(&H4E):png(3)=CByte(&H47)
dim gif(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)

on error resume next

return=false
dim fstream,fileExt,stamp,i
’得到文件后綴并轉(zhuǎn)化為小寫
FileExt = LCase(GetFileExt(sFileName))
’如果文件后綴為 jpg,jpeg,bmp,gif,png 中的任一種
’則執(zhí)行真實(shí)圖片判斷
If strInString(FileExt,”jpg|jpeg|bmp|gif|png”)=true then
Set fstream=Server.createobject(“ADODB.Stream”)
fstream.Open
fstream.Type=adTypeBinary
fstream.LoadFromFile sFileName
fstream.position=0
select case LCase(FileExt)
case “jpg”,”jpeg”
stamp=fstream.read(2)
for i=0 to 1
If ascB(MidB(stamp,i+1,1))=jpg(i) then return=true else return=false
next
case “gif”
stamp=fstream.read(6)
for i=0 to 5
If ascB(MidB(stamp,i+1,1))=gif(i) then return=true else return=false
next
case “png”
stamp=fstream.read(4)
for i=0 to 3
If ascB(MidB(stamp,i+1,1))=png(i) then return=true else return=false
next
case “bmp”
stamp=fstream.read(2)
for i=0 to 1
If ascB(MidB(stamp,i+1,1))=bmp(i) then return=true else return=false
next
End select

fstream.Close
Set fseteam=nothing
If err.number<>0 then return = false
else
return = true
End If
IsImgFile = return
End function

’*******************************************************
’作 用: 上傳文件擴(kuò)展名檢測(cè)
’函數(shù)名: CheckFileExt
’參 數(shù): sFileExt 上傳文件夾的后綴
’ strExt 允許或禁止上傳文件夾的后綴,多個(gè)以”|”分隔
’ blnAllow 是允許還是禁止上傳 strExt 中指定的后綴
’返回值: 合法文件返回 True ,否則返回False
’*******************************************************
Function CheckFileExt(sFileExt,strExt,blnAllow)
dim arrExt,return
’= 禁止上傳的文件列表
’strExt = “EXE|JS|BAT|HTML|HTM|COM|ASP|ASA|DLL|PHP|JSP|CGI”
sFileExt = UCase(sFileExt)
strExt = UCase(strExt)
arrExt = split(strExt,”|”)
If blnAllow=true then ‘只允許上傳指定的文件
return = false
for i=0 to UBound(arrExt)
If sFileExt=arrExt(i) then return=true
next
’response.write “Ext: “&sFileExt & ” return: ” & return & ” ”
else ’禁止上傳指定的文件
return = true
for i=0 to UBound(arrExt)
If sFileExt=arrExt(i) then return=false
next
End If
CheckFileExt = return
End Function

’*******************************************************
’作 用: 格式化顯示文件大小
’FileSize: 文件大小
’*******************************************************
Function FormatSize(FileSize)
If FileSize<1024 then FormatSize = FileSize & ” Byte”
If FileSize/1024 <1024 And FileSize/1024 > 1 then
FileSize = FileSize/1024
FormatSize=round(FileSize*100)/100 & ” KB”
Elseif FileSize/(1024*1024) > 1 Then
FileSize = FileSize/(1024*1024)
FormatSize = round(FileSize*100)/100 & ” MB”
End If
End function

’*******************************************************
’作 用: 取得文件對(duì)應(yīng)的圖標(biāo)
’函數(shù)名: FormatSize(FileSize)
’參 數(shù): FileName 文件名
’返回值: 合法文件返回 True ,否則返回False
’*******************************************************
Function GetFileIcon(FileName)
dim FileExt,Fso1
FileExt = GetFileExt(FileName)
ImgPath= strAdminRoot & ”Style/images/file/” & FileExt & “.gif”
Set Fso1 = Server.CreateObject(“ing.FileSystemObject”)
If Fso1.fileExists(server.MapPath(ImgPath))=true then
GetFileIcon= “<img src=”"” & ImgPath & “”">”
else
GetFileIcon= “<img src=”"” & strAdminRoot & “Style/images/file/unknow.gif” & “”">”
End If
Set Fso1=nothing
End Function
’*******************************************************
 

’作用:下載文件。
’函數(shù)名: DownFile(FileName)
’ FileName
’*******************************************************
Sub DownFile(FileName)
fname = server.MapPath(fname)
filename=split(fname,”\”)

Set objAdoStream=Server.createObject(“ADODB.Stream”)
objAdoStream.Type=1
objAdoStream.open()
objAdoStream.LoadFromFile(fname)
strchar=objAdoStream.Read()
fsize=objAdoStream.size
objAdoStream.Close()
Set objAdoStream=nothing

Response.AddHeader “content-type”,”application/x-msdownload”
response.AddHeader “Content-Disposition”,”attachment;filename=” & filename(ubound(filename))
Response.AddHeader “content-length”, fsize

Response.BinaryWrite(strchar)
Response.Flush()
End Sub
%>
——————————————————————————————————————————
附1:
Mid 函數(shù)
返回 Variant (String),其中包含字符串中指定數(shù)量的字符。
語(yǔ)法
Mid(string, start[, length])
start 必要參數(shù)。為 Long。string 中被取出部分的字符位置。如果 start 超過(guò) string 的字符數(shù),Mid 返回零長(zhǎng)度字符串 (“”)。
length 可選參數(shù);為 Variant (Long)。要返回的字符數(shù)。如果省略或 length 超過(guò)文本的字符數(shù)(包括 start 處的字符),將返回字符串中從 start 到尾端的所有字符。
有可能是你的start變量值大于字符串長(zhǎng)度,導(dǎo)致返回空字符串,或者是變量值為0,導(dǎo)致錯(cuò)誤
附2:
InstrRev的用法

描述
返回某字符串在另一個(gè)字符串中出現(xiàn)的從結(jié)尾計(jì)起的位置。
語(yǔ)法
InstrRev(string1, string2[, start[, compare]])
InstrRev 函數(shù)的語(yǔ)法有以下參數(shù):
參數(shù) 描述
string1 必選。接受搜索的字符串表達(dá)式。
string2 必選。被搜索的字符串表達(dá)式。
start 可選。數(shù)值表達(dá)式,用于設(shè)置每次搜索的開(kāi)始位置。如果省略,則默認(rèn)值為 -1,表示從最后一個(gè)字符的位置開(kāi)始搜索。如果 start 包含 Null,則出現(xiàn)錯(cuò)誤。
compare 可選。在計(jì)算子字符串時(shí),指示要使用的比較類型的數(shù)值。如果省略,將執(zhí)行二進(jìn)制比較。有關(guān)數(shù)值,請(qǐng)參閱“設(shè)置”部分。

設(shè)置
compare 參數(shù)可以有以下值:
常數(shù) Value 描述
vbBinaryCompare 0 執(zhí)行二進(jìn)制比較。
vbTextCompare 1 執(zhí)行文本比較。
vbDatabaseCompare 2 執(zhí)行基于包含在數(shù)據(jù)庫(kù)(在此數(shù)據(jù)庫(kù)中執(zhí)行比較)中的信息的比較。

返回值
InStrRev 返回以下值:
如果 InStrRev 返回
string1 為零長(zhǎng)度 0
string1 為 Null Null
string2 為零長(zhǎng)度 start
string2 為 Null Null
string2 沒(méi)有找到 0
在 string1 中找到 string2 找到匹配字符串的位置
start > Len(string2) 0

說(shuō)明請(qǐng)注意 InstrRev 函數(shù)的語(yǔ)法不同于 Instr 函數(shù)的語(yǔ)法。

關(guān)健詞:upfile.asp

分享到:

頂部 】 【 關(guān)閉
版權(quán)所有:佛山思海電腦網(wǎng)絡(luò)有限公司 ©1998-2024 All Rights Reserved.
聯(lián)系電話:(0757)22630313、22633833
中華人民共和國(guó)增值電信業(yè)務(wù)經(jīng)營(yíng)許可證: 粵B1.B2-20030321 備案號(hào):粵B2-20030321-1
網(wǎng)站公安備案編號(hào):44060602000007 交互式欄目專項(xiàng)備案編號(hào):200303DD003  
察察 工商 網(wǎng)安 舉報(bào)有獎(jiǎng)  警警  手機(jī)打開(kāi)網(wǎng)站