ASP終極防範上傳漏洞

來源:互聯網
上載者:User
上傳|上傳漏洞 其實無論是組件還是非組件上傳,都有這個漏洞,以下代碼請需要得朋友仔細閱讀,只要讀懂代碼就能融會貫通。
  
  這裡以ASPUPLOAD組件上傳為例
  
  以下3個關鍵函數:
  
  function killext(byval s1) '幹掉非法檔案尾碼
  dim allowext
  allowext=".JPG,.JPEG,.GIF,.BMP,.PNG,.SWF,.RM,.MP3,.WAV,.MID,.MIDI,.RA,.
  AVI,.MPG,.MPEG,.ASF,.ASX,.WMA,.MOV,.RAR,.ZIP,.EXE,.DOC,.XLS,.CHM,.HLP,.PDF"
  s1=ucase(s1)
  if len(s1)=0 then
   killext=""
  else
   if not chk(allowext,s1,",") then
   killext=".shit"
   else
   killext=s1
   end if
  end if
  end function
  
  function chk(byval s1,byval s2,byval fuhao) '檢查字串包含
  dim i,a
  chk=false
  a=split(s1,fuhao)
  for i = 0 to ubound(a)
   if trim(a(i))=trim(s2) then
   chk=true
   exit for
   end if
  next
  end function
  
  function gname(byval n1) '以日期自動產生目錄和檔案名稱,參數1組建目錄,參數2組建檔案名(無尾碼)
  dim t,r
  t=now()
  randomize(timer)
  r=int((rnd+1-1)*9999)
  select case n1
  case 1
  gname=year(t)&right("00"&month(t),2)&right("00"&day(t),2)
  case 2
  gname=right("00"&hour(t),2)&right("00"&minute(t),2)&right("00"&second(t),2)&right("0000"&r,4)
  end select
  end function
  
  調用方法:
  
  dim oup,ofile,ext,myfile
  
  Set oup = Server.CreateObject("Persits.Upload")
  oup.SetMaxSize 10000000, True
  call oup.Save() '這裡是上傳到伺服器記憶體,並沒有實際檔案產生
  set ofile = oup.files(1)
  ext=killext(ofile.ext)
  
  myfile="/" & ganme(1) & "/" & gname(2) & ext
  
  call ofile.saveas(server.mappath(myfile))
  
  
  
  附加說明:
  
  駭客如果用 nc 上傳非法檔案,最終得到的檔案只是
  
  如 200511051234559103.shit
  
  之類的“狗屎”檔案!



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。