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

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

upfile.asp上傳漏洞的修補方法

添加時間:2011-2-11  添加: admin 

修補upfile.asp上傳漏洞
ASP文件相關的一些函數(shù)。有以下幾個:
1. 得到文件擴展名
2. ASP上傳文件漏洞檢測
3. 格式化顯示文件大小
4. asp檢測上傳圖片是否為真實圖片
5. 上傳文件擴展名檢測
6. 取得文件對應的圖標
7. 下載文件等相關函數(shù)

程序代碼:
<%
’*******************************************************
’作 用: 得到文件擴展名
’函數(shù)名: GetFileExt(fileTrue)
’參 數(shù): sFileName 文件名
’返回值: 返回文件擴展名
’*******************************************************
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

’*******************************************************
’作 用: 檢測上傳的圖片文件(jpeg,gif,bmp,png)是否真的為圖片
’函數(shù)名: TrueStr(fileTrue)
’參 數(shù): sFileName 文件名(此處文件名是文件夾的物理全路徑)
’返回值: 確實為圖片文件則返回 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í)行真實圖片判斷
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

’*******************************************************
’作 用: 上傳文件擴展名檢測
’函數(shù)名: CheckFileExt
’參 數(shù): sFileExt 上傳文件夾的后綴
’ strExt 允許或禁止上傳文件夾的后綴,多個以”|”分隔
’ 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

’*******************************************************
’作 用: 取得文件對應的圖標
’函數(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ù)量的字符。
語法
Mid(string, start[, length])
start 必要參數(shù)。為 Long。string 中被取出部分的字符位置。如果 start 超過 string 的字符數(shù),Mid 返回零長度字符串 (“”)。
length 可選參數(shù);為 Variant (Long)。要返回的字符數(shù)。如果省略或 length 超過文本的字符數(shù)(包括 start 處的字符),將返回字符串中從 start 到尾端的所有字符。
有可能是你的start變量值大于字符串長度,導致返回空字符串,或者是變量值為0,導致錯誤
附2:
InstrRev的用法

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

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

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

說明請注意 InstrRev 函數(shù)的語法不同于 Instr 函數(shù)的語法。

關健詞:upfile.asp

分享到:

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