主頁(yè) > 知識(shí)庫(kù) > 關(guān)于asp+access的安全問題分析

關(guān)于asp+access的安全問題分析

熱門標(biāo)簽:蘭州智能語(yǔ)音電銷機(jī)器人功能 寧夏怎么申請(qǐng)400電話 企數(shù)外呼系統(tǒng)能用多久 辦理400電話一年多少錢 離線電子地圖標(biāo)注軟件注冊(cè) 咸陽(yáng)銷售外呼系統(tǒng) 為什么外呼系統(tǒng)需要預(yù)存話費(fèi)呢 常用地圖標(biāo)注范圍點(diǎn) 外呼回?fù)芟到y(tǒng)圖片
眾所周知,asp+access最大的安全隱患在于access數(shù)據(jù)庫(kù)可以被別人 
  下載,而現(xiàn)在提供的很多asp空間都是只支持access數(shù)據(jù)庫(kù),這樣一來, 
  asp+access的安全問題就顯得很突出了。 

  1.Access數(shù)據(jù)庫(kù)的存儲(chǔ)隱患 
  在ASP+Access應(yīng)用系統(tǒng)中,如果獲得或者猜到Access數(shù)據(jù)庫(kù)的存儲(chǔ)路 
  徑和數(shù)據(jù)庫(kù)名,則該數(shù)據(jù)庫(kù)就可以被下載到本地。 

  2.Access數(shù)據(jù)庫(kù)的解密隱患 
  由于Access數(shù)據(jù)庫(kù)的加密機(jī)制非常簡(jiǎn)單,所以即使數(shù)據(jù)庫(kù)設(shè)置了密碼, 
  解密也很容易。該數(shù)據(jù)庫(kù)系統(tǒng)通過將用戶輸入的密碼與某一固定密鑰進(jìn)行 
  異或來形成一個(gè)加密串,并將其存儲(chǔ)在*.mdb文件中從地址“&H42”開 
  始的區(qū)域內(nèi)。由于異或操作的特點(diǎn)是“經(jīng)過兩次異或就恢復(fù)原值”,因 
  此,用這一密鑰與*.mdb文件中的加密串進(jìn)行第二次異或操作,就可以輕 
  松地得到Access數(shù)據(jù)庫(kù)的密碼?;谶@種原理,可以很容易地編制出解密 
  程序。 

  由此可見,無論是否設(shè)置了數(shù)據(jù)庫(kù)密碼,只要數(shù)據(jù)庫(kù)被下載,其信息就沒有任何安全性可言了。 

  3.程序設(shè)計(jì)中的安全隱患   
  ASP代碼利用表單(form)實(shí)現(xiàn)與用戶交互的功能,而相應(yīng)的內(nèi)容會(huì)反 
  映在瀏覽器的地址欄中,如果不采用適當(dāng)?shù)陌踩胧?,只要記下這些內(nèi) 
  容,就可以繞過驗(yàn)證直接進(jìn)入某一頁(yè)面。例如在瀏覽器中敲入“…… 
  page.asp?x=1”,即可不經(jīng)過表單頁(yè)面直接進(jìn)入滿足“x=1”條件的頁(yè) 
  面。因此,在設(shè)計(jì)驗(yàn)證或注冊(cè)頁(yè)面時(shí),必須采取特殊措施來避免此類問題 
  的發(fā)生。 

  ========== 
  解決方案 
  ========== 

  提高數(shù)據(jù)庫(kù)的安全性 
  由于Access數(shù)據(jù)庫(kù)加密機(jī)制過于簡(jiǎn)單,因此,如何有效地防止Access 
  數(shù)據(jù)庫(kù)被下載,就成了提高ASP+Access解決方案安全性的重中之重。 

  1.非常規(guī)命名法 
  防止數(shù)據(jù)庫(kù)被找到的簡(jiǎn)便方法是為Access數(shù)據(jù)庫(kù)文件起一個(gè)復(fù)雜的非常 
  規(guī)名字,并把它存放在多層目錄下。例如,對(duì)于網(wǎng)上書店的數(shù)據(jù)庫(kù)文件, 
  不要簡(jiǎn)單地命名為“book.mdb”或“store.mdb”,而是要起個(gè)非常規(guī)的 
  名字,例如:faq19jhsvzbal.mdb,再把它放在 
  如./akkjj16t/kjhgb661/acd/avccx55 之類的深層目錄下。這樣,對(duì)于 
  一些通過猜的方式得到Access數(shù)據(jù)庫(kù)文件名的非法訪問方法起到了有效的 
  阻止作用。 

  2.使用ODBC數(shù)據(jù)源 
  在ASP程序設(shè)計(jì)中,應(yīng)盡量使用ODBC數(shù)據(jù)源,不要把數(shù)據(jù)庫(kù)名直接寫在 
  程序中,否則,數(shù)據(jù)庫(kù)名將隨ASP源代碼的失密而一同失密。例如: 
  DBPath = Server.MapPath(“./akkjj16t/ 
  kjhgb661/acd/avccx55/faq19jhsvzbal.mdb ”) 
  conn.Open “driver={Microsoft Access Driver (*.mdb)};dbq=” & DBPath 
  可見,即使數(shù)據(jù)庫(kù)名字起得再怪異,隱藏的目錄再深,ASP源代碼失密 
  后,數(shù)據(jù)庫(kù)也很容易被下載下來。如果使用ODBC數(shù)據(jù)源,就不會(huì)存在這樣 
  的問題了: 
  conn.open “ODBC-DSN名” 
  對(duì)ASP頁(yè)面進(jìn)行加密 
  為有效地防止ASP源代碼泄露,可以對(duì)ASP頁(yè)面進(jìn)行加密。一般有兩種方 
  法對(duì)ASP頁(yè)面進(jìn)行加密。一種是使用組件技術(shù)將編程邏輯封裝入DLL之中; 
  另一種是使用微軟的Script Encoder對(duì)ASP頁(yè)面進(jìn)行加密。但是,使用組 
  件技術(shù)存在的主要問題是每段代碼均需組件化,操作比較煩瑣,工作量較 
  大;而使用Script Encoder對(duì)ASP頁(yè)面進(jìn)行加密,操作簡(jiǎn)單、收效良好。 
  Script Encoder方法具有許多優(yōu)點(diǎn): 

  ⑴.HTML仍具有很好的可編輯性。Script Encoder只加密在HTML頁(yè)面中 
  嵌入的ASP代碼,其他部分仍保持不變,這就使得我們?nèi)匀豢梢允褂?nbsp;
  FrontPage或Dreamweaver等常用網(wǎng)頁(yè)編輯工具對(duì)HTML部分進(jìn)行修改、完 
  善,只是不能對(duì)ASP加密部分進(jìn)行修改,否則將導(dǎo)致文件失效。 
  ⑵.操作簡(jiǎn)單。只要掌握幾個(gè)命令行參數(shù)即可。Script Encoder的運(yùn)行 
  程序是screnc.exe,其使用方法如下: 
  screnc [/s] [/f] [/xl] [/l defLanguage ] [/e defExtension] inputfile outputfile 
  其中的參數(shù)含義如下: 
  s:屏蔽屏幕輸出; 
  f:指定輸出文件是否覆蓋同名輸入文件; 
  xl:是否在.asp文件的頂部添加@Language指令; 
  l:defLanguag指定缺省的腳本語(yǔ)言; 
  e:defExtension 指定待加密文件的擴(kuò)展名。 
  ⑶.可以批量加密文件。使用Script Encoder可以對(duì)當(dāng)前目錄中的所有 
  的ASP 文件進(jìn)行加密,并把加密后的文件統(tǒng)一輸出到相應(yīng)的目錄中。例 
  如: 
  screnc *.asp c:\temp 
  ⑷. Script Encoder是免費(fèi)軟件。該加密軟件可以從微軟網(wǎng)站下載: 
  http://msdn.microsoft.com/scripting/vbscript/download/x86/sce10en.exe。下載后,運(yùn)行安裝即可。 

  利用Session對(duì)象進(jìn)行注冊(cè)驗(yàn)證 
  為防止未經(jīng)注冊(cè)的用戶繞過注冊(cè)界面直接進(jìn)入應(yīng)用系統(tǒng),可以采用Session對(duì)象進(jìn)行注冊(cè)驗(yàn)證。Session對(duì)象最大的優(yōu)點(diǎn)是可以把某用戶的信息保留下來,讓后續(xù)的網(wǎng)頁(yè)讀取。 

  3.改數(shù)據(jù)庫(kù)擴(kuò)展名 
  你也可以將數(shù)據(jù)庫(kù)的擴(kuò)展名改為.asp,當(dāng)然在定位數(shù)據(jù)庫(kù)的時(shí)候也要 
  用類似database.asp的文件名,這樣數(shù)據(jù)庫(kù)不會(huì)被輕易的下載,而數(shù)據(jù) 
  還可以正常的讀出寫入。 

  4.向數(shù)據(jù)庫(kù)內(nèi)加錯(cuò)誤的asp代碼 
  如果以為做完第3項(xiàng)以后就萬事大吉了那就錯(cuò)了,雖然數(shù)據(jù)庫(kù)的擴(kuò)展名 
  變成了.asp,但是當(dāng)對(duì)方猜到了你的數(shù)據(jù)庫(kù)路徑以后還是可以下載的,只 
  不過慢了一些,對(duì)方可以等頁(yè)面完全打開以后“另存為”就可以了。要解 
  決這個(gè)問題可以載數(shù)據(jù)庫(kù)內(nèi)添加錯(cuò)誤的asp代碼。你可以先建立一個(gè)隱藏 
  表,表內(nèi)只有一列,并且插入這樣一行: 

  這樣一來對(duì)方打開數(shù)據(jù)庫(kù)的頁(yè)面時(shí)就只會(huì)出現(xiàn)asp腳本的錯(cuò)誤信息,而不 
  會(huì)下載你的數(shù)據(jù)庫(kù)了。 

  5.對(duì)于程序設(shè)計(jì)中隱患的解決一例 
  大多數(shù)人都認(rèn)為網(wǎng)站只要加了登錄密碼就無法正常進(jìn)入了。而請(qǐng)您看下 
  面的驗(yàn)證語(yǔ)句: 

  sql="select uname,pwd from uinfo where " 
  sql=sql"uname='"request.form("uname")"'" 
  sql=sql" and pwd='"request.form("pwd")"'" 
  rs.open sql,conn,1,1 
  if rs.eof or rs.bof then 
  response.write "對(duì)不起,錯(cuò)誤的用戶名/密碼!" 
  else 
  response.write "登錄成功!" 
  end if 

  可能已經(jīng)有讀者看出來了這段代碼是十分危險(xiǎn)的,只要對(duì)方知道用戶名就 
  可以登錄,你可以在密碼框里輸入“' or '1'='1”就可以了,其原理很 
  簡(jiǎn)單,就是利用了sql查詢語(yǔ)句,大家注意,用此方法提交以后的sql語(yǔ)句 
  變成了:(如果用戶名為administrator) 
  select uname,pwd from uinfo where uname='administrator' and pwd='' or '1'='1' 
  如果用戶名administrator存在的話那么這個(gè)記錄是可以被選出來的,之 
  后當(dāng)然就是可以正常登錄了。 

  解決方案: 

  sql="select uname,pwd from uinfo where " 
  sql=sql"uname='"request.form("uname")"'" 
  rs.open sql,conn,1,1 
  if rs.eof or rs.bof then 
  response.write "對(duì)不起,本站沒有此用戶!" 
  else 
  if rs.fields("pwd")=trim(request.form("pwd")) then 
  response.write "登錄成功!" 
  else 
  response.write "錯(cuò)誤的用戶名/密碼!" 
  end if 
  end if 

標(biāo)簽:鐵嶺 溫州 昆明 家電維修 昌都 泰州 麗江 咸陽(yáng)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《關(guān)于asp+access的安全問題分析》,本文關(guān)鍵詞  關(guān)于,asp+access,的,安全,問題,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《關(guān)于asp+access的安全問題分析》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于關(guān)于asp+access的安全問題分析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章