在Access客戶端對數據進行保護的方法

小編給大家整理了一些如何在Access客戶端對數據進行保護的一些方法,包括多種方式隱藏表對象,修改鏈接表路徑中的計算機名爲IP地址等幾種方法。

通常來說我們在使用Access開發完一個程序後,可以通過將其編譯成mde文件或accde文件來保護我們的勞動成果,這樣別人就看不到其中的源代碼了。還有Access有個問題就是可以通過Shift鍵忽略掉啓動設置,一旦使用Shift鍵打開數據庫後,所有的表和查詢都暴露在外面了,打開表後就能對數據進行任意的修改、刪除。

在本文中接下來說明了幾種從客戶端中保護數據的方法,及其相應的優缺點,而在實際當中我們應該使用多種方式進行組合使用,以提升數據的安全性,至少不應該明顯暴露,從而達到保護數據的目的。

一、隱藏表對象

1、 設置隱藏屬性:選中表對象,然後點擊工具欄中的屬性按鈕,或者在表對象中單擊右鍵,在彈出的快捷菜單中選擇屬性,打開對象屬性對話框,將其中的“隱藏”複選框選中。此方法的缺點是過於簡單,只要通過菜單——工具——選項,在其中的“視圖”選項卡中將“顯示隱藏對象”勾選,這個方法就形同虛設了。

2、將表名加上USys前綴,以此前綴開頭的對象,都會被視作系統對象,而默認情況下系統對象是被隱藏不顯示的。缺點也和前面的隱藏方式一樣,將“顯示系統對象”勾選後,就沒什麼效果了。

3、將表名加上~TMPCLP前綴,此前綴爲已刪除對象的命名前綴,但由於它的Flags爲0,所以即使壓縮後也並不會被真正刪除掉。這種方法隱藏的比較徹底,除非將名字改回來,否則是在數據庫窗口中看不到這個表的。但相應的來說取消隱藏也不復雜,只要知道了表名(從系統表MSysObjects中可以看到),用一個操作爲Rename的宏就可以讓它顯形。4、用DAO方法將表對象的Attibutes屬性設爲1(即常量dbHiddenObject),這種方式需要通過編程才能實現,相應的取消隱藏也需要通過編程來處理。
隱藏:CurrentDb.TableDefs(“表名”).Attibutes=dbHiddenObjecct
取消隱藏:CurrentDb.TableDefs(“表名”).Attibutes=0

前面說到的方法都是對錶的隱藏,但對於查詢對象卻沒有什麼好的隱藏方法,只能儘量少的使用查詢對象,而把查詢直接寫在窗體記錄源屬性中或者代碼中了,否則光隱藏表,還是能夠從查詢中對數據進行修改。

二、隱藏文件夾,替換成IP地址

當使用Access數據庫文件作爲後臺數據庫時,我們必須將其放在共享文件夾中才能讓其它計算機訪問到,另外由於對數據庫的訪問需要有讀寫權限,我們又不能將其設爲只讀。基於這種情況後臺數據庫就處於很不安全的情況,所以我們需要儘量隱藏數據庫的位置。一般來說做法有兩種:

一是將共享文件夾的共享名後面加一個美元符號($),這樣別人就不能從網上鄰居中看到這個文件夾。

二是使用鏈接表嚮導創建的鏈接表,其鏈接路徑都是類似於:

\計算機名稱\共享文件夾名稱\後臺數據庫文件.mdb

我們可以用代碼將其替換成相應的IP地址:

\192.168.1.1\共享文件夾名稱\後臺數據庫文件.mdb

使用DAO方式修改鏈接表的Connect屬性的相關示例代碼:

Dim tdf As DAO.TableDef
For Each tdf In CurrentDb.TableDefs
If tdf.Connect <> “” Then
tdf.Connect = Replace(tdf.Connect, “\計算機名”, “\192.168.1.1”)
tdf.RefreshLink
End If
Next

三、錶鏈接到另一個空數據庫

此方法用於使用前後端的情況,創建一個後臺數據庫的副本,裏面不存放任何數據,在退出時將鏈接表的鏈接來源修改爲此副本,重新登錄時再將鏈接表的鏈接源重置爲正確的後臺數據庫。修改鏈接表來源的方法也就是修改鏈接表的Connect屬性,具體代碼實現和方法二中的類似。

四、退出時刪除鏈接表

此方法同樣用於使用前後端的情況,在登錄時自動創建鏈接表,在退出時再將鏈接表全部刪除。可以在後臺數據庫中創建一個特定名稱的表,表中存放了那些需要鏈接的所有表的名稱,這樣啓動時就可以通過讀取這個表中的記錄來自動創建鏈接表。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章