當前位置:首頁 > 建站常識 > 列表

防止asp中的(de)access數據庫被下(xià)載的(de)解決方法

點擊:時(shí)間:2016/12/7關鍵詞:上海網頁制作 access 數據庫
1.發揮你的(de)想象力 修改數據庫文件名不用(yòng)說,這(zhè)是最最偷懶的(de)方法,但是若攻擊者通(tōng)過第三方途徑獲得(de)了(le)數據庫的(de)路徑),就玩完了(le)。比如說攻擊者本來(lái)隻能拿到list權,結果意外看到了(le)數據庫路徑,就可(kě)以冠冕堂皇地把數據庫下(xià)載回去研究了(le)。另外,數據文件通(tōng)常大(dà)小都比較大(dà),起

防止asp中的(de)access數據庫被下(xià)載的(de)解決方法

1.發揮你的(de)想象力 修改數據庫文件名

不用(yòng)說,這(zhè)是最最偷懶的(de)方法,但是若攻擊者通(tōng)過第三方途徑獲得(de)了(le)數據庫的(de)路徑),就玩完了(le)。比如說攻擊者本來(lái)隻能拿到list權,結果意外看到了(le)數據庫路徑,就可(kě)以冠冕堂皇地把數據庫下(xià)載回去研究了(le)。另外,數據文件通(tōng)常大(dà)小都比較大(dà),起再隐蔽的(de)文件名都瞞不了(le)人(rén)。故保密性爲最低。

2.數據庫名後綴改爲ASA、ASP等

此法須配合一些要進行一些設置,否則就會出現本文開頭的(de)那種情況

(1)二進制字段添加

(2)在這(zhè)個(gè)文件中加入<%或%>,IIS就會按ASP語法來(lái)解析,然後就會報告500錯誤,自然不能下(xià)載了(le)。可(kě)是假如隻是簡單的(de)在數據庫的(de)文本或者備注字段加入<%是沒用(yòng)的(de),因爲ACCESS會對(duì)其中的(de)内容進行處理(lǐ),在數據庫裏他(tā)會以< %的(de)形式存在,無效!正确的(de)方法是将<%存入OLE對(duì)象字段裏,這(zhè)樣我們的(de)目的(de)就能達到了(le)。

作方法:

首先,用(yòng)notepad新建一個(gè)内容爲 <% 的(de)文本文件,随便起個(gè)名字存檔。

接著(zhe),用(yòng)Access打開您的(de)數據庫文件,新建一個(gè)表,随便起個(gè)名字,在表中添加一個(gè)OLE對(duì)象的(de)字段,然後添加一個(gè)記錄,插入之前建立的(de)文本文件,假如操作正确的(de)話(huà),應該可(kě)以看到一個(gè)新的(de)名爲“數據包"的(de)記錄,asp學習(xí)網。

3.數據庫名前加“#”

隻需要把數據庫文件前名加上#、然後修改數據庫連接文件(如conn.asp)中的(de)數據庫地址。原理(lǐ)是下(xià)載的(de)時(shí)候隻能識别 #号前名的(de)部分(fēn),對(duì)于後面的(de)自動去掉,比如你要下(xià)載:http://www./date/#123.mdb(假設存在的(de)話(huà))。無論是IE還(hái)是FLASHGET等下(xià)到的(de)都是http://www.test.com/date/index.htm(index.asp、default.jsp等你在IIS設置的(de)首頁文檔)

另外在數據庫文件名中保留一些空格也(yě)起到類似作用(yòng),由于HTTP協議(yì)對(duì)地址解析的(de)非凡性,空格會被編碼爲"%",如http://www.test.com/date/123 ;456.mdb,下(xià)載的(de)時(shí)http://www.test.com/date/123 E6.mdb。而我們的(de)目錄就根本沒有123E6.mdb這(zhè)個(gè)文件,所以下(xià)載也(yě)是無效的(de)這(zhè)樣的(de)修改後,即使你暴露了(le)數據庫地址,一般情況下(xià)别人(rén)也(yě)是無法下(xià)載

4.加密數據庫

首先在選取"工具->安全->加密/解密數據庫,選取數據庫(如:employer.mdb),然後接确定,接著(zhe)會出現"數據庫加密後另存爲"的(de)窗(chuāng)口,存爲:employer1.mdb。接著(zhe)employer.mdb就會被編碼,然後存爲employer1.mdb..要注重的(de)是,以上的(de)動作并不是對(duì)數據庫設置密碼,而隻是對(duì)數據庫文件加以編碼,目的(de)是爲了(le)防止他(tā)人(rén)使用(yòng)别的(de)工具來(lái)查看數據庫文件的(de)内容。

接下(xià)來(lái)我們爲數據庫加密,首先以打開經過編碼了(le)的(de) employer1.mdb,在打開時(shí),選擇"獨占"方式。然後選取功能表的(de)"工具->安全->設置數據庫密碼", 接著(zhe)輸入密碼即可(kě)。這(zhè)樣即使他(tā)人(rén)得(de)到了(le)employer1.mdb文件,沒有密碼他(tā)是無法看到 employer1.mdb的(de)。

加密後要修改數據庫連接頁, 如:

conn.open "driver={microsoft access driver (*.mdb)};uid=admin;pwd=數據庫密碼;dbq=數據庫路徑"

這(zhè)樣修改後,數據庫即使被人(rén)下(xià)載了(le),别人(rén)也(yě)無法打開(前提是你的(de)數據庫連接頁中的(de)密碼沒有被洩露)

但值得(de)注重的(de)是,由于Access數據庫的(de)加密機制比較簡單,即使設置了(le)密碼,解密也(yě)很輕易。該數據庫系統通(tōng)過将用(yòng)戶輸入的(de)密碼與某一固定密鑰進行“異或”來(lái)形成一個(gè)加密串,并将其存儲在*.mdb文件從地址“&H42”開始的(de)區(qū)域内。所以一個(gè)好的(de)程序員(yuán)可(kě)以輕松制作一個(gè)幾十行的(de)小程序就可(kě)以輕松地獲得(de)任何Access數據庫的(de)密碼。因此,隻要數據庫被下(xià)載,其信息安全依然是個(gè)未知數。

5.數據庫放在WEB目錄外或将數據庫連接文件放到其他(tā)虛拟目錄下(xià)

如你的(de)WEB目錄是e:\webroot,可(kě)以把數據庫放到e:\data這(zhè)個(gè)文件夾裏,在e:\webroot裏的(de)數據庫連接頁中修改數據庫連接地址爲:"../data/數據庫名" 的(de)形式,這(zhè)樣數據庫可(kě)以正常調用(yòng),但是無法下(xià)載的(de),因爲它不在WEB目錄裏!這(zhè)個(gè)方法一般也(yě)不适合購(gòu)買虛拟空間的(de)用(yòng)戶。 當然現在某些虛拟主機程序在web目錄平行位置有獨立的(de)data目錄,這(zhè)樣子處理(lǐ)後相對(duì)來(lái)說是比較安全的(de)。因爲在http下(xià),沒有url可(kě)以指向這(zhè)個(gè)目錄。

6.使用(yòng)ODBC數據源

在ASP等程序設計中,假如有條件,應盡量使用(yòng)ODBC數據源,不要把數據庫名寫在程序中,否則,數據庫名将随ASP源代碼的(de)失密而一同失密,例如: DBPath = Server.MapPath(“../123/abc/asfadf.mdb ”)

conn.open “driver={Microsoft Access Driver (*.mdb)};dbq=”& DBPath

可(kě)見,即使數據庫名字起得(de)再怪異,隐藏的(de)目錄再深,ASP源代碼失密後,也(yě)很輕易被下(xià)載下(xià)來(lái)。假如使用(yòng)ODBC數據源,就不會存在這(zhè)樣的(de)問題了(le): conn.open “ODBC-DSN名” ,不過這(zhè)樣是比較煩的(de),目錄移動的(de)話(huà)又要重新設置數據源了(le),更方便的(de)方法請看第7,8法! 不過這(zhè)樣處理(lǐ)的(de)結果就是,效率很低,速度變慢(màn);遷移也(yě)不方便,必須重新設置數據源。

7.添加數據庫名的(de)如MDB的(de)擴展映射 (測試後方法可(kě)行,這(zhè)個(gè)比較方便)

這(zhè)個(gè)方法就是通(tōng)過修改IIS設置來(lái)實現,适合有IIS控制權的(de)朋友,不适合購(gòu)買虛拟主機用(yòng)戶(除非治理(lǐ)員(yuán)已經設置了(le))。這(zhè)個(gè)方法我認爲是目前最好的(de)。隻要修改一處,整個(gè)站點的(de)數據庫都可(kě)以防止被下(xià)載。無須修改代碼即使暴露目标地址也(yě)可(kě)以防止下(xià)載。

我們在IIS屬性---主目錄---配置---映射---應用(yòng)程序擴展那裏添加.mdb文件的(de)應用(yòng)解析。注重這(zhè)裏的(de)選擇的(de)DLL(或EXE等)似乎也(yě)不是任意的(de),選擇不當,這(zhè)個(gè)MDB文件還(hái)是可(kě)以被下(xià)載的(de), 注重最好不要選擇選擇asp.dll等。你可(kě)以自己多(duō)測試下(xià)

這(zhè)樣修改後下(xià)載數據庫如:/data/dvbbs6.mdb。就出現(404或500等錯誤)

8:使用(yòng).net的(de)優越性

動網的(de)木(mù)鳥就寫過一個(gè)防非法下(xià)載文件的(de)“WBAL 防盜鏈工具”。具體可(kě)以登陸http://www.9seek.com/WBAL/ ;

不過 那個(gè)隻實現了(le)防止非本地下(xià)載的(de) ,沒有起到真正的(de)防下(xià)載數據庫的(de)功能。不過這(zhè)個(gè)方法已經跟5法差不多(duō)可(kě)以通(tōng)過修改.NET文件,實現本地也(yě)不能下(xià)載

這(zhè)幾個(gè)方法中,隻有第7和(hé)8個(gè)是統一性改的(de),一次修改配置後,整個(gè)站點的(de)數據庫都可(kě)以防止下(xià)載,其他(tā)幾個(gè)就要分(fēn)别修改數據庫名和(hé)連接文件,比較麻煩,不過對(duì)于虛拟主機的(de)朋友也(yě)隻能這(zhè)樣

其實第6個(gè)方法應該是第5個(gè)方法的(de)擴展,可(kě)以實現非凡的(de)功能,但對(duì)于不支持.net的(de)主機或者怕設置麻煩的(de)話(huà),還(hái)是直接用(yòng)第5個(gè)方法了(le),而且默認情況下(xià)第6個(gè)方法,依然可(kě)以通(tōng)過複制連接到同主機的(de)論壇或留言本發表,然後就可(kě)以點擊下(xià)載了(le)(因爲這(zhè)樣的(de)引用(yòng)頁是來(lái)自同主機的(de))

9.利用(yòng)NTFS分(fēn)區(qū)的(de)文件權限設置(by percyboy)

我們已經知道,ASP.NET 中使用(yòng) ADO.NET 訪問數據庫,通(tōng)過 OleDb 的(de)連接可(kě)以訪問 Access 數據庫——我們非經常用(yòng)的(de)低端數據庫之一。本文討(tǎo)論了(le) ASP.NET 中可(kě)能看到的(de)若幹錯誤提示,從中看到 Access 2000 和(hé) Access XP 創建的(de)數據庫文件,在訪問出現錯誤時(shí)會出現不太相同的(de)錯誤提示。希望對(duì)大(dà)家有所幫助。另一個(gè)要點是,希望通(tōng)過此文,使大(dà)家對(duì) ASP.NET 中 Access 數據庫文件的(de) NTFS 權限設置有所新的(de)熟悉。

預約建站
免費提供網站優化(huà)
領取關鍵詞