亚洲VA成无码人在线观看天堂,久久久久亚洲av无码专区桃色,98色婷婷在线,成人吸奶大片在线观看

>> 微信網(wǎng)站-自助建站
西安做網(wǎng)站公司_西安做網(wǎng)站的公司_西安網(wǎng)站建設(shè)公司
首 頁
西安網(wǎng)站建設(shè)
西安域名注冊(cè)
西安網(wǎng)站空間
西安企業(yè)郵局
西安網(wǎng)站推廣
網(wǎng)站知識(shí)中心
關(guān)于玖佰網(wǎng)絡(luò)
西安做網(wǎng)站公司_西安做網(wǎng)站的公司_西安網(wǎng)站建設(shè)公司
知識(shí)中心
建站常見問題-->
域名空間企郵-->
網(wǎng)站建設(shè)推廣-->
網(wǎng)站方案優(yōu)化-->
服務(wù)指南
最新文章
西安學(xué)校教育行業(yè)網(wǎng)站建設(shè)方案
西安電子商務(wù)網(wǎng)站建設(shè)解決方案
西安酒店餐飲行業(yè)網(wǎng)站建設(shè)方案
西安旅游服務(wù)行業(yè)網(wǎng)站建設(shè)方案
西安醫(yī)院醫(yī)療行業(yè)網(wǎng)站建設(shè)方案
西安政府電子政務(wù)網(wǎng)站建設(shè)方案
西安生產(chǎn)制造行業(yè)網(wǎng)站建設(shè)方案
做好網(wǎng)站原創(chuàng)內(nèi)容設(shè)計(jì)的五大要點(diǎn)
  您現(xiàn)在的位置: 西安做網(wǎng)站_西安玖佰網(wǎng)絡(luò) > 知識(shí)中心 > 網(wǎng)站建設(shè)推廣 > 正文
修補(bǔ)upfile.asp上傳漏洞
西安玖佰網(wǎng)絡(luò) www.ksblcw.cn  點(diǎn)擊數(shù):  更新時(shí)間:2009/4/17 14:13:53

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("Scripting.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 返回零長(zhǎng)度字符串 ("")。
length 可選參數(shù);為 Variant (Long)。要返回的字符數(shù)。如果省略或 length 超過文本的字符數(shù)(包括 start 處的字符),將返回字符串中從 start 到尾端的所有字符。

有可能是你的start變量值大于字符串長(zhǎng)度,導(dǎo)致返回空字符串,或者是變量值為0,導(dǎo)致錯(cuò)誤

附2:

InstrRev的用法


描述
返回某字符串在另一個(gè)字符串中出現(xiàn)的從結(jié)尾計(jì)起的位置。
語法
InstrRev(string1, string2[, start[, compare]])
InstrRev 函數(shù)的語法有以下參數(shù):

參數(shù) 描述
string1 必選。接受搜索的字符串表達(dá)式。
string2 必選。被搜索的字符串表達(dá)式。
start 可選。數(shù)值表達(dá)式,用于設(shè)置每次搜索的開始位置。如果省略,則默認(rèn)值為 -1,表示從最后一個(gè)字符的位置開始搜索。如果 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ù)庫(在此數(shù)據(jù)庫中執(zhí)行比較)中的信息的比較。


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


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

 
我們專注于:西安網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計(jì),網(wǎng)站推廣,網(wǎng)站改版,網(wǎng)站維護(hù),域名注冊(cè),網(wǎng)站空間等服務(wù)
[西安玖佰網(wǎng)絡(luò)http://www.ksblcw.cn/] 專業(yè)的西安做網(wǎng)站公司。
  • 上一篇文章:
  • 下一篇文章:
  • 網(wǎng)站地圖 | 友情鏈接 | 聯(lián)系方式 | 文檔下載 | 人才招聘 | 付款方式 | 技術(shù)論壇
    西安做網(wǎng)站 西安建網(wǎng)站電話:15339190980 / 029-85535950 Email:900c@163.com
    西安玖佰網(wǎng)絡(luò) www.ksblcw.cn Copyright 2006-2021 版權(quán)所有 備案號(hào):陜ICP備08103580號(hào)
    西安網(wǎng)站建設(shè) 西安做網(wǎng)站公司 西安網(wǎng)站制作 西安做網(wǎng)站的公司
    點(diǎn)擊這里給我發(fā)消息
    點(diǎn)擊這里給我發(fā)消息
    點(diǎn)擊這里給我發(fā)消息
    點(diǎn)擊這里給我發(fā)消息