kien do, công ty tin học kiến đỏ, cong ty tin hoc kien do, tin học kiến đỏ, tin hoc kien do, kiến đỏ, kien do, kiendo.net, redant, shoppro, shopprovn, shopprovn.com, software, giải pháp it, phần mềm, ,                                                                                  Hôm nay

 
 
 
                                                     TRANG CHỦ | SẢN PHẨM | KINH NGHIỆM TRIỂN KHAI | TẢI SẢN PHẨM | THÔNG TIN | LIÊN HỆ
 
 ::  Trang chủ
 ::  Giới thiệu
 ::  Sản phẩm
 ::  ShopPro MDB
   ShopPro  -  A - Nước, gaz
   ShopPro  -  B - Nhà hàng
   ShopPro  -  C - Cafe, giải khát
   ShopPro  -  F - Các loại ngoại tệ
   ShopPro  -  G - Tiệm vàng
   ShopPro  -  P - Bản dùng chung
   ShopPro  -  U - Chỉ dùng USD
   ShopPro  -  S - ĐTDD, Sim, Card
 ::  ShopPro .NET
 ::  Thông tin
 ::  Hỗ trợ sử dụng  
  Yêu cầu kỹ thuật
  Quyền sử dụng
  Hướng dẫn cài đặt
  Font
  Quy tŕnh sử dụng
 ::  Kinh nghiệm triển khai
 ::  Download sản phẩm
   FREEWARE : SHOPPRO M
 ::  Liên hệ
 
 

 

 

 

 

 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
  Bảo mật cơ sở dữ liệu Access    ĐÀM MINH KHÔI  -  Bài đăng trên tạp chí CNTT EChip           
   

     Hầu như ai mần một ứng dụng Microsoft Access cũng xài một trong những (hoặc tất cả) cách sau để bảo vệ cơ sở dữ liệu (CSDL), ḥng khóa tay, khóa chân những nhân viên ṭ ṃ, thích quậy:

    1. Bảo vệ mă lệnh VBA (Visual Basic for Application) bằng cách chọn mục Properties trên tŕnh đơn Tools của cửa sổ soạn thảo Microsoft Visual Basic rồi chọn trang Protection trên hộp thoại Project Properties. Cuối cùng, chọn Lock project for viewing, kèm theo là mật khẩu bảo vệ. Với cách này, cấu trúc và dữ liệu các bảng (table) vẫn có thể được xem và sửa đổi.

    2. Dùng chức năng Make MDE file để ngăn không cho sửa đổi mă lệnh, thiết kế biểu mẫu (form) và thiết kế báo biểu (report). Với cách này, cấu trúc và dữ liệu các bảng (table) vẫn có thể được lấy đi để chuyển vào tập tin .MDB khác mà xem và sửa đổi.

    3. Dùng chức năng Encrypt / Decrypt database… để mă hóa CSDL, ngăn không cho các chương tŕnh tiện ích hay xử lư văn bản giải mă nhưng vẫn có thể dùng Access để mở.

    4. Dùng chức năng Set database password để quy định mật khẩu cho CSDL. Cách này hơi phiền nếu có một bảng trong CSDL khác liên kết (link) với nó. Nếu quên mật khẩu th́ … khóc luôn chứ sao!

    5. Thiết kế một biểu mẫu khởi động, trong đó yêu cầu cho biết tên và mật khẩu, dùng hộp thoại Startup (từ danh sách Display Form/Page) để quy định phải mở biểu mẫu này trước tiên mỗi lần mở CSDL. Nhờ cách này, ta có thể giấu luôn cửa sổ Database, nơi có thể xem và chọn các thành phần của CSDL để sửa chữa.

    Trong những cách trên, cách thứ 5 vẫn có thể bị vượt qua bằng cách nhấn và giữ phím Shift trong lúc mở CSDL. Để khắc phục, ta có thể dùng Visual Basic gán trị False cho thuộc tính AllowBypassKey để vô hiệu hóa phím Shift khi mở CSDL.

    Giả sử bạn có một CSDL tên dbLock.MDB. Mỗi lần người ta mở nó, bạn muốn biểu mẫu frmKhoiDong luôn được hiển thị trước tiên bằng cách xác định Display Form/Page là frmKhoiDong. Để thay đổi thuộc tính AllowBypassKey, bắt buộc phải mở CSDL, gán trị mới cho thuộc tính này, đóng CSDL lại th́ lần mở sau mới có ép-phê. Bạn nhớ, cần khóa làm sao để người ta không mở được mà ḿnh mở được, nghĩa là ta phải có ch́a khóa để mở. Ch́a ở đây chính là một biểu mẫu khác, chẳng hạn có tên là frmChiaKhoa.

    Khi đă thay đổi thuộc tính AllowBypassKey được rồi, chắc chắn biểu mẫu frmKhoiDong được hiển thị khi mở CSDL. Cho nên ta đặt ch́a khóa thông qua biểu mẫu này bằng cách vẽ một ô điều khiển nào đấy (miễn sao nó có thủ tục xử lư t́nh huống Click là được), chẳng hạn nhăn lblChiaKhoa, rồi đặt thuộc tính Visible là No và thêm ḍng lệnh DoCmd.OpenForm “frmChiaKhoa” vào thủ tục xử lư t́nh huống Click. Bạn phải nhớ vị trí nhăn lblChiaKhoa để lôi ch́a khóa ra nhé. Như vậy, vấn đề c̣n lại nằm ở biểu mẫu frmChiaKhoa.

   Bạn mở cửa sổ soạn thảo Microsoft Visual Basic, chọn mục References… để bảo đảm Microsoft DAO xx.xx Object Library (trong đó, phiên bản xx.xx có thể là: 2.5 hoặc 3.51 hoặc 3.6 tùy theo phiên bản Access, dĩ nhiên nên chọn phiên bản mới nhất) đă được chọn trong danh sách Available References.

 

   



Biểu mẫu cần thiết kế

 

   

H́nh 1 là biểu mẫu frmChiaKhoa cần thiết kế, bao gồm một ô văn bản txtPassword để nhận mật khẩu mà người cần mở khóa phải gơ vào, một nút lệnh cmdLock thực hiện việc khóa CSDL và một nút lệnh cmdUnlock thực hiện việc mở khóa CSDL. Xong, bạn gơ các thủ tục xử lư như đoạn mă 1. Trước khi quậy chuyện này trên một CSDL, bạn nên sao chép pḥng hờ CSDL để tránh sự cố khóa được rồi nhưng không mở được (do bạn gơ nhầm các ḍng lệnh).

Đoạn mă 1

'Hàm ChangeProperty thay đổi các thuộc tính của CSDL

Function ChangeProperty(strPropName, varPropType, varPropValue)

  Dim dbs As Database, prp As Property

  Const conPropNotFoundError = 3270

  Set dbs = CurrentDb

  On Error GoTo Change_XuLyLoi

  dbs.Properties(strPropName) = varPropValue

  ChangeProperty = True

Change_KetThuc:

  Exit Function

Change_XuLyLoi:

  'Thuộc tính không thấy

  If Err = conPropNotFoundError Then 

  Set prp = dbs.CreateProperty(strPropName, _

  varPropType, varPropValue)

  dbs.Properties.Append prp

  Resume Next

  Else

  'Không biết lỗi ǵ

  ChangeProperty = False

  Resume Change_KetThuc

  End If

End Function

'Xử lư t́nh huống chọn nút [Khóa database]

Private Sub cmdLock_Click()

  ‘Biểu mẫu này được nạp trước

  ChangeProperty "StartupForm", dbText, "frmKhoiDong"

  ChangeProperty "StartupShowDBWindow", dbBoolean, False

  ChangeProperty "StartupShowStatusBar", dbBoolean, False

  ChangeProperty "AllowBuiltinToolbars", dbBoolean, False

  ChangeProperty "AllowFullMenus", dbBoolean, False

  ChangeProperty "AllowBreakIntoCode", dbBoolean, False

  ChangeProperty "AllowSpecialKeys", dbBoolean, False

 

  ‘Không cho xài phím Shift để bỏ qua biểu mẫu frmKhoiDong

  ChangeProperty "AllowBypassKey", dbBoolean, False

 

  MsgBox "Cơ sở dữ liệu đă được khóa! Đóng cơ sở dữ liệu, _

  rồi mở lại mới có ép-phê.", vbOKOnly, "eChip Security"

  cmdExit.SetFocus

  cmdUnlock.Visible = True

  cmdLock.Visible = False

End Sub

'Xử lư t́nh huống chọn nút [Mở database]

Private Sub cmdUnlock_Click()

  ‘Không cần biểu mẫu khởi động nữa

  ChangeProperty "StartupForm", dbText, ""

  ChangeProperty "StartupShowDBWindow", dbBoolean, True

  ChangeProperty "StartupShowStatusBar", dbBoolean, True

  ChangeProperty "AllowBuiltinToolbars", dbBoolean, True

  ChangeProperty "AllowFullMenus", dbBoolean, True

  ChangeProperty "AllowBreakIntoCode", dbBoolean, True

  ChangeProperty "AllowSpecialKeys", dbBoolean, True

  ChangeProperty "AllowBypassKey", dbBoolean, True

  MsgBox "Cơ sở dữ liệu đă được mở khóa ! _

  Đóng cơ sở dữ liệu, rồi mở lại mới có ép-phê.", _

  vbOKOnly, "eChip Security"

  cmdExit.SetFocus

  txtPassword = ""

  cmdLock.Visible = True

  cmdUnlock.Visible = False

  txtPassword.Visible = False

End Sub

'Xử lư t́nh huống khi mở biểu mẫu

Private Sub Form_Open(Cancel As Integer)

  Dim dbs As Database

  Set dbs = CurrentDb

  On Error GoTo KhongCoThuocTinh_Err

  If dbs.Properties("AllowBypassKey") Then

    cmdLock.Visible = True

    txtPassword.Visible = False

  Else

    cmdLock.Visible = False

    txtPassword.Visible = True

  End If

  Exit Sub

  KhongCoThuocTinh_Err:

  cmdLock.Visible = True

  txtPassword.Visible = False

End Sub

'Khi người ta gơ mật khẩu và nhấn phím Enter

Private Sub txtPassword_LostFocus()

  If txtPassword = "echip" Then

    cmdUnlock.Visible = True

  End If

End Sub

 
 


Trang chủ | Tin tức thông báo | Hỗ trợ sử dụng | Download sản phẩm | Liên hệ

© 2006 Bản quyền thuộc về Công ty TNHH Tin học Kiến Đỏ (RedAnt Co.,Ltd.)
Số cũ: 14/31 Phổ Quang (Số mới: 31 Phạm Cự Lượng, P2, Q.Tân B́nh, TP.HCM)
Tel: (08) 997 5645 - 842 0744  -  Fax: (848) 842 0744
Email: shoppro@hcm.vnn.vn     Website: www.kiendo.net - www.shopprovn.com