Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Shared code]_Login + Phân quyền chi tiết tới từng cm(Gửi Ongke0711)
#81
Bác Dân cũng cho em xin vào mail nhatki001@gmail.com nhé!

Em là gà siêu cấp nên nếu có thể rất mong bác hướng dẫn qua mail các bước đại khái làm sao để làm được những file quản lý pro của các bác nhé.

Em cám ơn nhiều!
Chữ ký của toancvp Nếu tất cả đường đời đều trơn láng    
Có thể nào ta nhận ra ta Bat
Reply
Những người đã cảm ơn
#82
(22-05-16, 11:31 PM)toancvp Đã viết: Bác Dân cũng cho em xin vào mail nhatki001@gmail.com nhé!

Em là gà siêu cấp nên nếu có thể rất mong bác hướng dẫn qua mail các bước đại khái làm sao để làm được những file quản lý pro của các bác nhé.

Em cám ơn nhiều!

Đã gửi.
Chữ ký của maidinhdan * Để được hỗ trợ tốt nhất, nhấn vào link dưới đây để xem.
1. [Hướng dẫn] Kiểu file gửi lên để được giúp đỡ
2. [Hướng dẫn] Nội quy diễn đàn
3. [Hướng dẫn] Cách Đưa file và hình vào diễn đàn
4.[Hướng dẫn] Để xây dựng một ứng dụng hoàn hảo và lời cảm tạ
5. Cần tìm Demo hay ứng dụng sử dụng thanh tìm kiếm phía trên cùng, bên phải của diễn đàn.
* Nếu muốn cảm ơn, hãy nhấn nút thank, không cần viết thêm bài nào nửa.



ღღღღღTài sản của maidinhdan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn toancvp
#83
Photo 
Chào các Bạn,

Tôi đã kiểm thử giải pháp phân quyền này, kết quả cho thấy đây không phải là giải pháp bảo mật tốt, vì lỗ hổng quá lớn.
Đây là cách tôi kiểm tra mà các Bạn dễ dàng làm được vì tất cả đều chỉ là Access căn bản thôi mà:

1. Để chắc ăn, tôi cho biên dịch từ file ứng dụng đang ở dạng MDB sang MDE để bảo đảm người sử dụng không thể can thiệp vào code và các thiết kế của ứng dụng

2. Tôi tạo 1 file mdb bình thường và cho link tables từ file MDE ứng dụng vào như ảnh đính kèm (ảnh 1).
Các Bạn chú ý: khi chuyển sang MDE, tuy không can thiệp được code và thiết kế các objects như Form / Report, nhưng ta vẫn có thể tuỳ ý mần chi cũng được với các đối tượng còn lại như: tables (cốt lõi), query, macro.

Các Bạn dễ dàng thấy được cách tôi xác định nguồn của các tables thông qua những lệnh rất đơn giản và phổ thông trên cửa sổ Immediate

3. Tôi có thể dễ dàng và nhanh chóng thay đổi tuỳ ý dữ liệu đang có trong các tables chỉ bằng 1 Query cập nhật. Trong ảnh đính kèm là 1 Query cho cập nhật thành toàn quyền trong bảng phân quyền (ảnh 2 và ảnh 3).

4. Chẳng có gì là bảo mật nếu các Bạn để lồ lộ ra như vậy. Tôi xin gợi ý là các Bạn cần phải mã hoá toàn bộ bảng phân quyền đi theo 1 cách nào đó, để nếu cơ mở ra cũng chẳng đoán được gì.


File đính kèm Thumbnail(s)
           
Chữ ký của lehongduc Lê Hồng Đức
Số ĐT: 0913.941.144
Email: lhongduc@gmail.com, lehongduc@ymail.com
Website: http://quantribanhang.vn
Reply
Những người đã cảm ơn ongke0711 , maidinhdan
#84
Cảm ơn góp ý của anh lehongduc.
Nếu như CSDL này tách ra thành FE, BE và đặt pass cho BE thì chắc là không thể Connect được rồi đúng không anh.
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#85
(24-05-16, 09:17 AM)ongke0711 Đã viết: Cảm ơn góp ý của anh lehongduc.
Nếu như CSDL này tách ra thành FE, BE và đặt pass cho BE thì chắc là không thể Connect được rồi đúng không anh.

Chào các Bạn,
Nếu muốn bảo mật và phân quyền tốt, các Bạn đừng nghĩ đến 2 giải pháp đã có sẵn trong Microsoft Access:
1. Phân quyền theo cơ chế "Security level", nghĩa là có dùng file MDW (Workgroup Information File). Từ lâu đã có công cụ cờ-rắc cái file này rồi. Nên chẳng chắc ăn lắm, dù chỉ ở mức tương đối.

2. Cài Password cho file MDB. Vì cũng với lý do tương tự như trên. Nếu sử dụng Microsoft Access 2007 trở về sau thì Password này còn được sử dụng như 1 khoá để Access mã hoá dữ liệu. Mã hoá thì phải giải mã, vậy là hạn chế tốc độ xử lý ứng dụng.

3. Theo tôi, các Bạn đang chọn 1 hướng đi đúng đó. Tuy nhiên:
Thay vì cho đăng ký thẩm quyền như vậy thì các Bạn thử làm như sau: tạo 2 bảng để ghi lại nội dung phân quyền, tôi thí dụ:

- Ta sẽ tổ chức phân quyền theo nhóm người dùng, thay vì phân quyền theo người dùng.

- Tên bảng thứ nhất là "UsysGp" dùng để đăng ký nhóm người dùng (Group) và người dùng trong từng nhóm (User), vì sao là "Usys" thì các Bạn thử tìm hiểu cho thú vị nhé.
Các cột dữ liệu gồm có:
+ tên cột thứ nhất là "fld1": dùng để ghi tên User,
+ tên cột thứ hai là "fld2": dùng để ghi tên Group mà User là thành viên.
Các cột này sẽ được mã hoá bằng 1 hàm mã hoá (Encrypt data). Vì tên User và tên Group ngắn nên việc mã hoá và giải mã sẽ nhẹ nhàng thôi.

- Tên bảng thứ hai là "UsysGp" dùng để quy định thẩm quyền của từng nhóm.
Các cột dữ liệu gồm có:
+ cột 1 là "fld1": đăng ký tên Group
+ cột 2 là "fld2": đăng ký tên đối tượng (Objects) là Form / Report 
+ cột 3 là "fld3" có kiểu dữ liệu là số (Integer): dùng để ghi thẩm quyền (thí dụ: 0: không có quyền chi, 1: chỉ có quyền đọc, 2: có quyền ghi, ...)

- Sau đó các Bạn viết các Functions để:
+ Mã hoá và giải mã chuỗi (để mã hoá và giải mã tên của User/Group), 
+ Thiết lập và đọc phân quyền của 1 User nào đó thông qua Group mà họ là thành viên. Ta sẽ dùng các Function này trong các sự kiện Open Form / Open Report để quyết định chế độ hoạt động của Form / Report một cách tương ứng với thẩm quyền của User.

- Để "bí hiểm" hơn các Bạn có thể xáo trộn thứ tự các cột trong các bảng nêu trên, nhằm mục đích có ai đó mở bảng ra để đọc cũng chẳng biết đường đâu mà lần. Nếu các Bạn đặt tên bảng "ngộ đến không ngờ" thì càng tăng thêm độ "bí hiểm" để ai đó muốn tìm bảng có liên quan để mở thì cũng đổ mồ hôi giọt.

Xin chúc các Bạn nhiều sức khoẻ.
Chữ ký của lehongduc Lê Hồng Đức
Số ĐT: 0913.941.144
Email: lhongduc@gmail.com, lehongduc@ymail.com
Website: http://quantribanhang.vn
Reply
Những người đã cảm ơn ongke0711 , maidinhdan
#86
Chào các Bạn,

Có Bạn vừa hỏi tôi về Function mã hoá và giải mã.
Chỉ cần Google là có sẵn mà xơi thôi mà các Bạn. Tôi tìm dùm các Bạn rồi nè:

1. Hàm mã hoá chuỗi theo khoá xác định
Trích dẫn:Public Function EncryptStr(strInData As String, strPassKey As String) As String
    Dim strHexChar As String, strNewDataStr As String, strAscPassKey As String
    Dim intPassKeyChar As Integer, intInDataChar As Integer
    Dim intNewAscChar As Integer
    Dim i As Long
    Dim j As Integer
    
    j = 0
    strAscPassKey = ""
    strNewDataStr = ""
    
    If Len(strPassKey) = 0 Then
        For i = Len(strInData) To 1 Step -1
            strPassKey = strPassKey & Mid(strInData, i, 1)
        Next
    End If
    
    For i = 1 To Len(strPassKey)
        strAscPassKey = strAscPassKey & Asc(Mid(strPassKey, i, 1))
    Next
    
    For i = 1 To Len(strInData)
        j = j + 1
        intPassKeyChar = Asc(Mid(strAscPassKey, j, 1))
        If j >= Len(strAscPassKey) Then j = 0
        intInDataChar = Asc(Mid(strInData, i, 1))
        intNewAscChar = intPassKeyChar Xor intInDataChar
        strHexChar = Hex(intNewAscChar)
        If Len(strHexChar) < 2 Then strHexChar = "0" & strHexChar
        strNewDataStr = strNewDataStr & strHexChar
    Next
    EncryptStr = strNewDataStr
End Function

2. Hàm giải mã chuỗi theo khoá đã được mã hoá.
Trích dẫn:Public Function DecryptStr(strInData As String, strPassKey As String) As String
    Dim strTmp As String, strHexChar As String
    Dim strNewDataStr As String, strAscPassKey As String
    Dim intPassKeyChar As Integer, intInDataChar As Integer
    Dim intNewAscChar As Integer
    Dim i As Long
    Dim j As Integer
    
    j = 0
    strAscPassKey = ""
    strNewDataStr = ""
    
    If Len(strPassKey) = 0 Then
        For i = Len(strInData) To 1 Step -1
            strPassKey = strPassKey & Mid(strInData, i, 1)
        Next
    End If
    
    For i = 1 To Len(strPassKey)
        strAscPassKey = strAscPassKey & Asc(Mid(strPassKey, i, 1))
    Next
    
    For i = 1 To Len(strInData) Step 2
    
        j = j + 1
        intPassKeyChar = Asc(Mid(strAscPassKey, j, 1))
        If j >= Len(strAscPassKey) Then j = 0
        
        strHexChar = Mid(strInData, i, 2)
        
        intNewAscChar = CInt("&H" & strHexChar)

        intInDataChar = intPassKeyChar Xor intNewAscChar
        strNewDataStr = strNewDataStr & Chr(intInDataChar)
    Next
    DecryptStr = strNewDataStr
End Function

Xin chú ý: các Function vì đã được public trên internet rồi, ai cũng có thể tìm thấy, nên nếu các Bạn muốn chắc ăn thì "bào chế" thêm cho nó thiệt là "bí hiểm".

Chúc các Bạn thành công.
Chữ ký của lehongduc Lê Hồng Đức
Số ĐT: 0913.941.144
Email: lhongduc@gmail.com, lehongduc@ymail.com
Website: http://quantribanhang.vn
Reply
Những người đã cảm ơn ongke0711 , maidinhdan
#87
Thật là tuyệt vời đúng cái mình đang cần. Hân ơi cho mình cái pass VBA với.
Chữ ký của zinzin8x zinzin8x,gia nhập Thủ Thuật Access từ 19-01 -16.
Reply
Những người đã cảm ơn
#88
Chào các Bạn,

Có Bạn yêu cầu tôi cho coi mắt 1 cái tool có khả năng "bẻ càng" mấy cái khoá kiểu Password Database hay Security Level của Microsoft Access.
Chà, các Bạn lại làm khó tôi rồi. Cứ Gu-Gồ là ra ngay thôi mà.

Thôi thì, tôi đành phải mét với các Bạn 1 cái tool điển hình vậy. Tải về từ chỗ này nè: http://www.fshare.vn/file/PC93DCB8XSWT

Và trình thêm cho các Bạn xem để "nổi da gà" cái việc với tool trên, hổng tới 1 nốt nhạc là ra ngay cái Password Database khủng cỡ này nè: !@#$%^&*()_+qaz

Xin xem ảnh đính kèm.
[Hình: u335l6294xo0apm4g.jpg]
Chữ ký của lehongduc Lê Hồng Đức
Số ĐT: 0913.941.144
Email: lhongduc@gmail.com, lehongduc@ymail.com
Website: http://quantribanhang.vn
Reply
Những người đã cảm ơn zinzin8x
#89
hic. minh quên không để lại mail. Cho minh xin cái pass vba với. mail của mình : damtuan86@gmail.com
Chữ ký của zinzin8x zinzin8x,gia nhập Thủ Thuật Access từ 19-01 -16.
Reply
Những người đã cảm ơn
#90
(18-09-15, 06:52 PM)maidinhdan Đã viết: Sau nhiều ngày miệt mài, mình cũng đã hoàn thiệt tất cả các hàm để xây dựng một Demo Phân quyền chi tiết và để dễ cho mọi người chỉ cần import thẩy vào cái ứng dụng của mình viết là đã sử dụng được ( code ngắn gọi ngắn gọn xúc tích, dể hiểu).

Minh họa 1 đoạn Code:

* Để mở 1 form ta thường dùng lệnh docmd.OpenForm sau sự kiện Click, Nhưng khi bạn sử dụng hàm trong Demo của mình thì không cần gọi dài đến thế, cũng không cần đánh docmd.close ...:

Mã PHP:
Private Sub cmdmoform1_Click()
TestQuyenXem ("frm1" 
End Sub 


* Ý nghĩa, Khi Click, Mở form frm1, kiểm tra 4 quyền: Xem ( tức là mở form), Thêm, Xóa, Sửa
+ Nếu: Tài khoản có quyền Xem thì mở form frm1....tiếp...kiểm tra quyền Thêm, Xóa, Sửa
+ Nếu: Tài khoản Không có quyền Xem chẳng làm gì cả, rồi thông báo Tại sao không mở được.


* MỘt số hinh ành và code sử dụng,
[Hình: DemoPQCT_MDD1.jpg]


[Hình: DemoPQCT_MDD3.jpg]

[Hình: DemoPQCT_MDD5.jpg]

[Hình: DemoPQCT_MDD2.jpg]





* Quan sát kỹ hình này, tất cả các code có trong 1 form chỉ có vài dòng


[Hình: DemoPQCT_MDD4.jpg]

Có lẽ mình lám Video tách riêng bài cho các bạn dể sử dụng hơn nửa, chỉ cần chèn vào ứng dụng là sử dụng hoặc phối hợp để viết .

* Các hàm được sử dụng trong Demo
- Hàm chính

+ Quyền xem form
+ Hàm xóa 1 record
+ Hàm thêm mới
+ Hàm khai báo biến toàn cục


- Hàm phụ:
+ Hàm kiểm tra có quyền Thêm, Xóa, Sửa
+ Hàm đóng mở form


Link và Demo: Phía dưới, Pass VBA, xin để lại lời nhắn ở bài này, Pass sẽ chuyển vào Hộp thư của các bạn

Demo tải về tại bài thứ 5,

Thân mến!

Bác cho em xin cái pass. Mail của em: nam8384@gmail.com
Chữ ký của nam8384 nam8384,gia nhập Thủ Thuật Access từ 17-03 -16.
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  [Shared Code] Quản lý theo doi nghỉ Lễ + phép maidinhdan 17 573 17-11-16, 04:20 PM
Bài mới nhất: thanhdl1
  [Shared Code] Quản lý Quỹ ( Thu - Chi) maidinhdan 28 1,465 12-10-16, 11:32 PM
Bài mới nhất: maidinhdan
  Chia sẻ phần mềm quản lý quán ăn, cafe hay khuuquytrung 2 151 10-10-16, 09:55 AM
Bài mới nhất: lamvankhanh
  Phần mềm quản lý công văn (Iso) dành cho cán bạn mới học access khuuquytrung 18 4,010 08-10-16, 01:02 PM
Bài mới nhất: trungdv007
  [Shared code + Ứng dụng] Quản lý bàn ăn, Bida, Karaoke lamvankhanh 3 302 03-08-16, 11:13 AM
Bài mới nhất: maidinhdan

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ