ASP網站漏洞解析及******防範方法

如何更好的達到防範******,本人提一下我的意見!

第一,免費程序不要真的就免費用,既然你能夠共享原碼,那麼***者同樣能夠分析代碼。若是在細節上注意防範,那樣你站點的安全性就大大的提升了。即便出現了SQL Injection這樣的漏洞,***者也不可能立刻拿下你的站點。

  因爲ASP的方便易用,愈來愈多的網站後臺程序都使用ASP腳本語言。可是,因爲ASP自己存在一些安全漏洞,稍不當心就會給***提供可乘之機。事實上,安全不只是網管的事,編程人員也必須在某些安全細節上注意,養成良好的安全習慣,不然會給本身的網站帶來巨大的安全隱患。目前,大多數網站上的ASP程序有這樣那樣的安全漏洞,但若是編寫程序的時候注意一點的話,仍是能夠避免的。


  1、用戶名與口令被破解

  ***原理:用戶名與口令,每每是***們最感興趣的東西,若是被經過某種方式看到源代碼,後果是嚴重的。

  防範技巧:涉及用戶名與口令的程序最好封裝在服務器端,儘可能少在ASP文件裏出現,涉及與數據庫鏈接的用戶名與口令應給予最小的權限。出現次數多的用戶名與口令能夠寫在一個位置比較隱蔽的包含文件中。若是涉及與數據庫鏈接,在理想狀態下只給它以執行存儲過程的權限,千萬不要直接給予該用戶修改、插入、刪除記錄的權限。

  2、驗證被繞過


  ***原理:如今須要通過驗證的ASP程序大可能是在頁面頭部加一個判斷語句,但這還不夠,有可能被***繞過驗證直接進入。

  防範技巧:須要通過驗證的ASP頁面,可跟蹤上一個頁面的文件名,只有從上一頁面轉進來的會話才能讀取這個頁面。

  3inc文件泄露問題

  ***原理:當存在ASP的主頁正在製做且沒有進行最後調試完成之前,能夠被某些搜索引擎機動追加爲搜索對象。若是這時候有人利用搜索引擎對這些網頁進行查找,會獲得有關文件的定位,並能在瀏覽器中查看到數據庫地點和結構的細節,並以此揭示完整的源代碼。

   防範技巧:程序員應該在網頁發佈前對它進行完全的調試;安全專家則須要加固ASP文件以便外部的用戶不能看到它們。首先對.inc文件內容進行加密,其 次也可使用.asp文件代替.inc文件使用戶沒法從瀏覽器直接觀看文件的源代碼。inc文件的文件名不要使用系統默認的或者有特殊含義容易被用戶猜想到的名稱,儘可能使用無規則的英文字母。

  4、自動備份被下載

  ***原理:在有些 編輯ASP程序的工具中,當建立或者修改一個ASP文件時,編輯器自動建立一個備份文件,好比:UltraEdit就會備份一個.bak文件,如你建立或 者修改了some.asp,編輯器會自動生成一個叫some.asp.bak文件,若是你沒有刪除這個bak文件,***者能夠直接下載 some.asp.bak文件,這樣some.asp的源程序就會被下載。

  防範技巧:上傳程序以前要仔細檢查,刪除沒必要要的文檔。對以BAK爲後綴的文件要特別當心。

  5、特殊字符

   ***原理:輸入框是***利用的一個目標,他們能夠經過輸入腳本語言等對用戶客戶端形成損壞;若是該輸入框涉及數據查詢,他們會利用特殊查詢語句,獲得更多的數據庫數據,甚至表的所有。所以必須對輸入框進行過濾。但若是爲了提升效率僅在客戶端進行輸入合法性檢查,仍有可能被繞過。

  防範 技巧:在處理相似留言板、BBS等輸入框的ASP程序中,最好屏蔽掉HTMLJavaScriptVBScript語句,如無特殊要求,能夠限定只容許輸入字母與數字,屏蔽掉特殊字符。同時對輸入字符的長度進行限制。並且不但要在客戶端進行輸入合法性檢查,同時要在服務器端程序中進行相似檢查。
 6、數據庫下載漏洞

  ***原理:在用Access作後臺數據庫時,若是有人經過各類方法知道或者猜到了服務器的Access數據庫的路徑和數據庫名稱,那麼他也可以下載這個Access數據庫文件,這是很是危險的。

  防範技巧:

   (1)爲你的數據庫文件名稱起個複雜的很是規的名字,並把它放在幾層目錄下。所謂很是規, 打個比方說,好比有個數據庫要保存的是有關書籍的信息, 可不要給它起個「book.mdb」的名字,而要起個怪怪的名稱,好比d34ksfslf.mdb,並把它放在如./kdslf/i44/studi/的幾層目錄下,這樣***要想經過猜的方式獲得你的Access數據庫文件就難上加難了。

  (2)不要把數據庫名寫在程序中。有些人喜歡把DSN寫在程序中,好比:
  DBPath = Server.MapPath「cmddb.mdb」
  conn.Open 「driver={Microsoft Access Driver *.mdb}dbq=」 & DBPath

  假如萬一給人拿到了源程序,你的Access數據庫的名字就盡收眼底了。所以建議你在ODBC裏設置數據源,再在程序中這樣寫:
  conn.open「shujiyuan」

  (3)使用Access來爲數據庫文件編碼及加密。首先在工具安全加密/解密數據庫中選取數據庫(如:employer.mdb),而後按肯定,接着會出現數據庫加密後另存爲的窗口,可存爲:「employer1.mdb」

  要注意的是,以上的動做並非對數據庫設置密碼,而只是對數據庫文件加以編碼,目的是爲了防止他人使用別的工具來查看數據庫文件的內容。

   接下來咱們爲數據庫加密,首先打開通過編碼了的 employer1.mdb,在打開時,選擇獨佔方式。而後選取功能表的工具安全設置數據庫密碼,接着輸入密碼便可。這樣即便他人獲得了 employer1.mdb文件,沒有密碼他也是沒法看到 employer1.mdb中的內容。

  7、防範遠程注入***

   這類***在之前應該是比較常見的***方式,好比POST***,***者能夠隨便的改變要提交的數據值已達到***目的.又如:COOKIES 的僞造,這一點更值得引發程序編寫者或站長的注意,不要使用COOKIES來作爲用戶驗證的方式,不然你和把鑰匙留給賊是同一個道理
.

  好比:
  If trim(Request. cookies ("uname"))="fqy" and Request.cookies("upwd") =」fqy#e3i5.com」 then
  ……..more………
  End if

  我想各位站長或者是喜愛寫程序的朋友千萬別出這類錯誤,真的是不可饒恕.僞造COOKIES 都多少年了,你還用這樣的就不能怪別人跑你的密碼.涉及到用戶密碼或者是用戶登錄時,你最好使用session 它纔是最安全的.若是要使用COOKIES就在你的COOKIES上多加一個信息,SessionID,它的隨機值是64位的,要猜解它,不可能.:
  if not (rs.BOF or rs.eof) then
  login="true"
  Session("username"&sessionID) = Username
  Session("password"& sessionID) = Password
  ‘Response.cookies(「username」)= Username
  ‘Response.cookies(「Password」)= Password

  下面咱們來談談如何防範遠程注入***,通常的***都是將單表提交文件拖到本地,Form ACTION=」chk.asp」 指向你服務器中處理數據的文件便可.若是你所有的數據過濾都在單表頁上,那麼恭喜你,你將已經被腳本***了.
怎麼才能制止這樣的遠程***?好辦,請看代碼以下: 程序體(9)
  <%
  server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
  server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
  if mid(server_v1,8,len(server_v2))<>server_v2 then
  response.write "br><br><center>"
  response.write " "
  response.write "你提交的路徑有誤,禁止從站點外部提交數據請不要亂改參數!"
  response.write "

"
  response.end
  end if
  %>

我的感受上面的代碼過濾不是很好,有一些外部提交居然還能堂堂正正的進來,因而再寫一個.

  這個是過濾效果很好,建議使用.

  if instr(request.servervariables("http_referer"),"http://"&request.servervariables("host") )<1 then response.write "處理 URL 時服務器上出錯。

  若是您是在用任何手段***服務器,那你應該慶幸,你的全部操做已經被服務器記錄,咱們會第一時間通知公安局與國家安所有門來調查你的IP. "
  response.end
  end if
  程序體(9)

  本覺得這樣就萬事大吉了,在表格頁上加一些限制,好比maxlength,等等..但天公就是那麼不做 美,你越怕什麼他越來什麼.你別忘了,***者能夠突破sql注入***時輸入框長度的限制.寫一個SOCKET程序改變HTTP_REFERER?我不會。網上發表了這樣一篇文章:
  ------------len.reg-----------------
  Windows Registry Editor Version 5.00
  [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\擴展(&E)]
  @="C:\Documents and Settings\Administrator\桌面\len.htm"
  "contexts"=dword:00000004
  -----------end----------------------
  -----------len.htm------------------
  
  ----------end-----------------------

  用法:先把len.reg導入註冊表(注意文件路徑)

  而後把len.htm拷到註冊表中指定的地方.

  打開網頁,光標放在要改變長度的輸入框上點右鍵,看多了一個叫擴展的選項了吧

  單擊搞定! 後記:一樣的也就能夠對付那些限制輸入內容的腳本了.

   怎麼辦?咱們的限制被饒過了,全部的努力都白費了?不,舉起你de鍵盤,說不。讓咱們繼續回到腳本字符的過濾吧,他們所進行的注入無非就是進行腳本***。咱們把全部的精力全都用到ACTION之後的頁面吧,在chk.asp頁中,咱們將非法的字符所有過濾掉,結果如何?咱們只在前面虛晃一槍,叫他們去改註冊表吧,當他們改完纔會發現,他們所作的都是那麼的徒勞。

  8ASP***

  已經講到這裏了,再提醒各位論壇站長一句,當心大家的文件上傳:爲何論壇程序被攻破後主機也隨之被***者佔據。緣由就在……對!ASP***!一個絕對可惡的東西。病毒麼?非也.把個文件隨便放到你論壇的程序中,您老找去吧。不吐血纔怪哦。如何才能防止ASP***被上傳到服務器呢?方法很簡單,若是你的論壇支持文件上傳,請設定好你要上傳的文件格式,我不同意使用可更改的文件格式,直接從程序上鎖定,只有圖象文件格式,和壓縮文件就徹底能夠,多給本身留點方便也就多給***者留點方便。怎麼判斷格式,我這裏收集了一個,也改出了一個,你們能夠看一下:
程序體(10
  判斷文件類型是否合格
  Private Function CheckFileExt (fileEXT)
  dim Forumupload
  Forumupload="gif,jpg,bmp,jpeg"
  Forumupload=split(Forumupload,",")
  for i=0 to ubound(Forumupload)
  if lcase(fileEXT)=lcase(trim(Forumupload(i))) then
  CheckFileExt=true
  exit Function
  else
  CheckFileExt=false
  end if
  next
  End Function
  驗證文件內容的合法性

set MyFile = server.CreateObject ("Scripting.FileSystemObject")
  set MyText = MyFile.OpenTextFile (sFile, 1) ’ 讀取文本文件
  sTextAll = lcase(MyText.ReadAll): MyText.close
  判斷用戶文件中的危險操做
  sStr ="8 .getfolder .createfolder .deletefolder .createdirectory 
  .deletedirectory"
  sStr = sStr & " .saveas wscript.shell script.encode"
  sNoString = split(sStr," ")
  for i = 1 to sNoString(0)
  if instr(sTextAll, sNoString(i)) <> 0 then
  sFile = Upl.Path & sFileSave: fs.DeleteFile sFile
  Response.write "center><br><big"& sFileSave &"文件中含有與操做目錄等有關的命令"&_
  "br><font color=red"& mid(sNoString(i),2) &"/font>,爲了安全緣由,<b>不能上傳。<b"&_"/big></center></html"
  Response.end
  end if
  next

  把他們加到你的上傳程序裏作一次驗證,那麼你的上傳程序安全性將會大大提升.

  什麼?你還不放心?拿出殺手鐗,請你的虛擬主機服務商來幫忙吧。登錄到服務器, 將PROG ID 中的"shell.application"項和"shell.application.1"項更名或刪除。再將」WSCRIPT.SHELL」項 和」WSCRIPT.SHELL.1」這兩項都要更名或刪除。呵呵,我能夠大膽的說,國內可能近半以上的虛擬主機都沒改過。只能慶幸大家的用戶很合做,不然……我刪,我刪,我刪刪刪……
相關文章
相關標籤/搜索