許多程序員在開發的時候都認為改了mdb後綴為asp就能防下載的概念
是錯的!後台數據庫被下載對於一個 asp+a ccess的網站來說無疑是一場慘絕人寰的災難
今天找了各方的文章
歸納一下有以下
種辦法防止數據庫被下載
發揮你的想象力 修改數據庫文件名不用說這是最最偷懶的方法但是若攻擊者通過第三方途徑獲得了數據庫的路徑)就玩完了比如說攻擊者本來只能拿到list權 結果意外看到了數據庫路徑就可以冠冕堂皇地把數據庫下載回去研究了另外數據文件通常大小都比較大起再隱蔽的文件名都瞞 不了人故保密性為最低
數據庫名後綴改為ASAASP等
此法須配合一些要進行一些設置否則就會出現本文開頭的那種情況
()二進制字段添加
() 在這個文件中加入<%或%>IIS就會按ASP語法來解析然後就會報告錯誤自然不能下載了可是 如果只是簡單的在數據庫的文本或者備注字段加入<%是沒用的因為ACCESS會對其中的內容進行處理在數據庫裡他會以 < %的形式存在無效!正確的方法是將 <%存入OLE對象字段裡這樣我們的目的就能達到了操作方法首先用notepad新建一個內容為 <% 的 文本文件隨便起個名字存檔接著用Access打開您的數據庫文件新建一個表隨便起個名字在表中添加一個OLE對象的字段然後添加一個記錄 插入之前建立的文本文件如果操作正確的話應該可以看到一個新的名為數據包的記錄
數據庫名前加#只需要把數據庫文件前名加上#然後修改數據庫連接文件(如connasp)中的數據庫地址原理是下載的時候只能識別& nbsp#號前名的部分對於後面的自動去掉比如你要下載http://wwwpcdigestcom/date/# mdb(假設存在的話)無論是 IE還是FLASHGET等下到的都是http://wwwtestcom/dat e/indexhtm (indexasp defaultjsp等你在IIS設置的首頁文檔)另外在數據庫文件名中保留一些空格也起到類似作用由於HTTP協議對地址解析的特殊性空格會被編碼為%如http ://wwwtestcom/date/ mdb下載的時 http //www testcom/date/ %mdb而我們的目錄就根本沒有%mdb這個文件所 以下載也是無效的這樣的修改後即使你暴露了數據庫地址一般情況下別人也是無法下載!
加密數據庫首先在選取工具> 安全>加密/解密數據庫選取數據庫(如employermdb)然後接確定接 著會出現數據庫加密後另存為的窗口存為 employermdb接著employermdb就會被編碼然後存為 employermdb……要注意的是以上的動作並不是對數據庫設置密碼而只是對數據庫文件加以編碼目的是為了防止他 人使用別的工具來查看數據庫文件的內容
接下來我們為數據庫加密首先以打開經過編碼了的 e mployermdb在打開時選擇獨占方式然後選取功能表的工具>安全>設置數據庫密碼 接著輸入密碼即可這樣即使他人得到了employermdb文件沒有密碼他是無法看到 emplo yermdb 的
加密後要修改數據庫連接頁 如connopen driver= {microsoft access driver&nb sp(*mdb)}uid=adminpwd=數據庫密碼dbq=數據庫路徑這樣修改後數據庫即使被人下載了別人也無法打開(前提是你的數據庫連接頁中的密碼沒有被洩露)
但值得注意的是由於 Access數據庫的加密機制比較簡單即使設置了密碼解密也很容易該數據庫系統通過將用戶輸入的 密碼與某一固定密鑰進行 異或來形成一個加密串並將其存儲在*mdb文件從地址&H開始的區域內所以一 個好的程序員可以輕松制作一個幾十行的小程序就可以輕松地獲得任何 Access數據庫的密碼因此只要數據庫被下載其信息安 全依然是個未知數
數據庫放在WEB目錄外或將數據庫連接文件放到其他虛擬目錄下如你的WEB目錄是e\webroot可以把數據庫放到e\data這個文件夾裡在 e\webroot裡的數據庫 連接頁中修改數據庫連接地址為……/data/數據庫名 的形式這樣數據庫可以正常調用但是無法下載的因 為它不在WEB目錄裡!這個方法一般也不適合購買虛擬空間的用戶
使用ODBC數據源
在ASP等程序設計中如果有條件應盡量使用ODBC數據源不要把數據庫名寫在程序中否則數據庫名將隨ASP源代碼 的失密而一同失密例如 DBPath = ServerMapPath(……// abc/asfadfmdb )
connopen driver ={Microsoft Access Driver&nb sp(*mdb)}dbq=& DBPath可見即使數據庫名字起得再怪異隱藏的目錄再深ASP源代碼失密後也很容易被下載下來如果使用ODBC數據源就不 會存在這樣的問題了 connopen ODBCDSN名 不過這樣是比較煩的目 錄移動的話又要重新設置數據源了更方便的方法請看第法!
添加數據庫名的如MDB的擴展映射這個方法就是通過修改IIS設置來實現適合有IIS控制權的朋友不適合購買虛擬主機用戶(除非管理員已經設置了)這個 方法我認為是目前最好的只要修改一處整個站點的數據庫都可以防止被下載無須修改代碼即使暴露目標地址也可以防止下載&n bsp我們在IIS屬性 ——主目錄——配置——映射——應用程序擴展那裡添加mdb文件的應用解析注意這裡的選擇的D LL(或EXE等)似乎也不是任意的選擇不當這個MDB文件還是可以被下載的 注意最好不要選擇選 擇aspdll等你可以自己多測試下這樣修改後下載數據庫如http: //wwwtestcom/data/dvbbsmdb就出現(或 等錯誤)
使用net的優越性動網的木鳥就寫過一個防非法下載文件的WBAL 防盜鏈工具具體可以登陸http://wwwseek com/WBAL/ 不過 那個只實現了防止非本地下載的 沒有起到真正的防下載數據庫的功能不過這個方法已經跟法差 不多可以通過修改NET文件實現本地也不能下載!
這幾個方法中只有第和個是統一性改的一次修改配置後整個站點的數據庫都可以防止下載其他幾個就要分別修改數據庫 名和連接文件比較麻煩不過對於虛擬主機的朋友也只能這樣了!
其實第個方法應該是第個方法的擴展可以實現特殊的功能但對於不支持net的主機或者怕設置麻煩的話還是直接用第 個方法了而且默認情況下第個方法依然可以通過復制連接到同主機的論壇或留言本發表然後就可以點擊下載了(因為這樣的引 用頁是來自同主機的)
利用NTFS分區的文件權限設置(by percyboy)
我們已經知道ASPNET 中使用 ADONET 訪問數據庫通過 OleDb 的連接可以訪問 Access 數據庫— —我們非常常用的低端數據庫之一本文討論了 ASPNET 中可能看到的若干錯誤提示從中看到&nb spAccess 和 Access XP 創建的數據庫文件 在訪問出現錯誤時會出現不太相同的錯誤提示希望對大家有所幫助另一個要點是希望通過此文使大家對 ASP NET 中 Access 數據庫文件的 NTFS 權限設置有所新的認識
From:http://tw.wingwit.com/Article/program/SQL/201311/16414.html