Bảo mật code VBA (1 người xem)

  • Thread starter Thread starter myGPE
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

Tôi tuân thủ nội quy khi đăng bài

myGPE

Thành viên mới
Tham gia
6/9/24
Bài viết
14
Được thích
1
Mình có 1 file *.xslm có chứa code VBA và muốn bảo mật code VBA để người khác ko chỉnh sửa được. Mặc dù đã đặt mật mã cho đoạn code nhưng vẫn bị bẻ khóa. Nhờ các ace trong Group có biện pháp nào giúp mình bảo mật được code VBA khi mình chia sẻ file cho người khác dùng chung đc ko nhỉ? Thanks cả nhà
 
Bạn chuyển sang học lập trình Assembly và sử dụng Thunk code trong VBA là không có nhân tài nào bẻ được mã của bạn.
 
Upvote 0
Bạn chuyển sang học lập trình Assembly và sử dụng Thunk code trong VBA là không có nhân tài nào bẻ được mã của bạn.
Cảm ơn bạn đã gợi ý. Do mình ko phải là dân lập trình chuyên nghiệp nên ko hiểu sâu về lập trình. Mình cũng chỉ tự mầy mò mấy code VBA trong phạm vi công việc của mình mà ko có cách nào để quản lý và bảo vệ được file *.xlsm có Marco
 
Upvote 0
Upvote 0
Upvote 0
C/C++ hay dotNet thì cũng phải có code của bên thứ 3 để bảo mật.
Còn không thì người ta cũng tìm cách xem được. Tôi giả thiết 1 xíu để trao đổi nhé:
Giả sử tôi có file bạn làm "rất xịn" và đã được bảo mật.
1. Tôi quay video lại và đưa lên diễn đàn GPE, sẽ cố làm một chút form giống vậy, tưởng tượng ra flow, sau đó thì nhờ anh em trên này code giúp.
2. Tôi không có ý nói code bạn không hay, hoặc bỏ qua công sức của bạn. Xin lỗi nếu lỡ có làm bạn phật ý.
Bạn cứ code cho tốt, rồi nếu không có gì quá ghê gớm thì cứ chia sẻ, bão lũ này nhiều người còn mang cả tiền tỷ ra đi cho. Code thuần trên này nhiều người sẵn sàng giúp, nhiều khi còn không được cả cảm ơn.
 
Upvote 0
C/C++ hay dotNet thì cũng phải có code của bên thứ 3 để bảo mật.
Còn không thì người ta cũng tìm cách xem được. Tôi giả thiết 1 xíu để trao đổi nhé:
Giả sử tôi có file bạn làm "rất xịn" và đã được bảo mật.
1. Tôi quay video lại và đưa lên diễn đàn GPE, sẽ cố làm một chút form giống vậy, tưởng tượng ra flow, sau đó thì nhờ anh em trên này code giúp.
2. Tôi không có ý nói code bạn không hay, hoặc bỏ qua công sức của bạn. Xin lỗi nếu lỡ có làm bạn phật ý.
Bạn cứ code cho tốt, rồi nếu không có gì quá ghê gớm thì cứ chia sẻ, bão lũ này nhiều người còn mang cả tiền tỷ ra đi cho. Code thuần trên này nhiều người sẵn sàng giúp, nhiều khi còn không được cả cảm ơn.
Mình ko hiểu ý bạn lắm. Code của mình thì cũng ko có gì ghê gớm cả. chỉ phục vụ chuyên môn công việc riêng thôi. Nhưng có điều quan trọng là trong file của mình sử dụng liên kết đến SQL Server của công ty. Nếu như bị bẻ khóa thì đồng nghĩa với việc bị lộ Server name, User, Pw. Đấy là điều tôi lo ngại nhất chứ tôi cũng ko tiếc gì mà ngại ngần chia sẻ cho các đồng nghiệp!
Bạn có cách nào mà khi bị bẻ khóa vẫn bảo vệ đc Server, User & Pw ko?
 
Upvote 0
Mình có 1 file *.xslm có chứa code VBA và muốn bảo mật code VBA để người khác ko chỉnh sửa được. Mặc dù đã đặt mật mã cho đoạn code nhưng vẫn bị bẻ khóa. Nhờ các ace trong Group có biện pháp nào giúp mình bảo mật được code VBA khi mình chia sẻ file cho người khác dùng chung đc ko nhỉ? Thanks cả nhà
Cách thì có, nhưng trình chưa tới thì khó. Khi đã đạt cảnh giới cao rồi thì cần quái gì phải khóa, họ có xem code thì cũng có hiểu gì đâu.
Cơ bản là khi xài VBA thì khó bảo mật lắm, cần bảo mật thì phải dùng cái khác thôi
 
Upvote 0
Như vậy có nghĩa là ko sẽ ko có cách nào để bảo vệ sản phẩm của mình làm ra ư?
Bạn đi học lại hoặc tra google để có mã như ý, mà lại muốn bảo mật code, đó là ích kỉ bạn nhé. Cả thế giới đang cùng nhau chia sẻ hàng triệu hàng tỉ giải thuật và thuật toán. Chỉ có người "ích kỉ, cầu lợi" mới nghĩ nhiều đến việc bảo vệ code bạn nhé. Chưa cống hiến được gì cho đời mã muốn lấy nhiều hơn cho. Nếu bạn không hiểu người đã bỏ công sức ra học tập, thì làm sao hiểu được nổi khó khăn. Đơn giản chữ viết và ngôn ngữ bạn đang nói và đang đọc, là cả quá trình phát triển. Huống chi là những dòng mã bạn tìm thấy.

Tập có ý nghĩ cho đi, thì bộ não tự nhiên mà kết tụ trí tựu siêu việt.
Tốt nhất là nên hiểu chút về luật "cây rễ hoa quả"
 
Upvote 0
Bạn đi học lại hoặc tra google để có mã như ý, mà lại muốn bảo mật code, đó là ích kỉ bạn nhé. Cả thế giới đang cùng nhau chia sẻ hàng triệu hàng tỉ giải thuật và thuật toán. Chỉ có người "ích kỉ, cầu lợi" mới nghĩ nhiều đến việc bảo vệ code bạn nhé. Chưa cống hiến được gì cho đời mã muốn lấy nhiều hơn cho. Nếu bạn không hiểu người đã bỏ công sức ra học tập, thì làm sao hiểu được nổi khó khăn. Đơn giản chữ viết và ngôn ngữ bạn đang nói và đang đọc, là cả quá trình phát triển. Huống chi là những dòng mã bạn tìm thấy.

Tập có ý nghĩ cho đi, thì bộ não tự nhiên mà kết tụ trí tựu siêu việt.
Tốt nhất là nên hiểu chút về luật "cây rễ hoa quả"
Cảm ơn bạn đã nhắc nhở. Code của mình thì cũng ko có gì ghê gớm cả. chỉ phục vụ chuyên môn công việc riêng thôi. Nhưng có điều quan trọng là trong file của mình sử dụng liên kết đến SQL Server của công ty. Nếu như bị bẻ khóa thì đồng nghĩa với việc bị lộ Server name, User, Pw. Đấy là điều tôi lo ngại nhất chứ tôi cũng ko tiếc gì mà ngại ngần chia sẻ cho các đồng nghiệp!
Bạn có cách nào mà khi bị bẻ khóa vẫn bảo vệ đc Server, User & Pw ko?
Bạn là thành viên của nơi đã cho bạn công ăn việc làm thì bạn có muốn để những việc gây hại cho tổ chức của mình ko???
Nếu là ích kỷ thì chỉ dành riêng cho bản thân mình dùng, chứ còn mang đi chia sẻ cho người khác dùng làm chi. Nếu như bạn làm ra 1 thứ hoặc ít nhất là cũng mất bao công sức tìm kiếm học hỏi để làm ra cho người khác sử dụng free rồi sau đó là mất dữ liệu, lộ thông tin..... Theo bạn cái đó có cần đc bảo vệ ko???
 
Upvote 0
Không ai trót dại đi nhập password và usename vào mã VBA với ứng dụng nhiều người dùng bạn nhé, trừ khi account đó có giới hạn là chỉ được phép truy cập dữ liệu nhưng không được sửa đổi. account đó gọi chung là public account. account cần giữ an toàn thì phải để người dùng nhập tay tại thời điểm người dùng mở và sử dụng ứng dụng.
Nếu dữ liệu tại server là dữ liệu quan trọng thì cần mã hóa với công nghệ mã hóa và quản lý tài khoản truy cập theo tiêu chuẩn.
 
Upvote 0
Bạn có cách nào mà khi bị bẻ khóa vẫn bảo vệ đc Server, User & Pw ko?
Cái này là quan trọng nhất nhưng bạn thiết kế kiểu gì mà có lưu User/pass trong code vậy?
Theo cách tôi làm là có 2 cổng trước khi vào tới table dữ liệu.
1. User/pass để kết nối tới SQL Server.
2. User/pass của ứng dụng của bạn. Dùng kết nối vào Table dữ liệu. Pass này được mã hóa 1 chiều. Ví dụ: HashBytes('md5', password).
Bạn không tiết lộ user/pass cho người khác thì làm sao họ đăng nhập được. Không tính tới trường hợp bị xâm nhập gói tin gửi đi của các h a c k e r nhé.

Chuỗi kết nối như vậy thì làm sao biết được bạn.
Screen Shot 2024-09-19 at 10.31.55.png
 
Upvote 0
Cái này là quan trọng nhất nhưng bạn thiết kế kiểu gì mà có lưu User/pass trong code vậy?
Theo cách tôi làm là có 2 cổng trước khi vào tới table dữ liệu.
1. User/pass để kết nối tới SQL Server.
2. User/pass của ứng dụng của bạn. Dùng kết nối vào Table dữ liệu. Pass này được mã hóa 1 chiều. Ví dụ: HashBytes('md5', password).
Bạn không tiết lộ user/pass cho người khác thì làm sao họ đăng nhập được. Không tính tới trường hợp bị xâm nhập gói tin gửi đi của các h a c k e r nhé.

Chuỗi kết nối như vậy thì làm sao biết được bạn.
View attachment 304062
Cảm ơn bạn đã chia sẻ. Mình cũng có InputBox User, PW bằng tay cho các user khác sử dụng và chỉ giới hạn cho họ chỉ đc trích xuất dữ liệu còn họ sẽ ko biết tên Server Name và DatabaseName. Giả dụ 1 user khác có quyền Insert, Update, Delete bị lộ thì họ cũng ko biết đc ServerName và DatabaseName để can thiệp. Mà ServerName và DatabaseName thì phải để trong Code VBA.
 
Upvote 0
Mà ServerName và DatabaseName thì phải để trong Code VBA.
Nếu bạn muốn dấu luôn chuỗi kết nối này thì viết nó thành DLL (VB6, VB.Net) rồi gọi nó trong code. Tôi chỉ biết tới cách này thôi, còn cách nào khác nữa thì chưa biết. :)
Ví dụ:

Mã:
Dim oCnn as myConnection
Set oCnn = New myConnection
 
Upvote 0
Mà ServerName và DatabaseName thì phải để trong Code VBA.
Lưu trong máy (Registry) được mà.
Muốn an toàn hơn nữa thì lưu thông tin đã mã hóa, code sẽ giải mã. Có lộ file cũng không lo.
Nếu chính người dùng trong công ty bạn cố tình xâm nhập thì chắc không có cách nào an toàn cả.
 
Upvote 0
Muốn an toàn hơn nữa thì lưu thông tin đã mã hóa, code sẽ giải mã. Có lộ file cũng không lo.
Nếu họ có file thì có code giải mã trong đó + file mã hóa thì học cũng giải được đúng không bạn? hay có cách mã hóa khác mà tôi chưa hình dung ra.
 
Upvote 0
Lưu Password vào đâu đó thì tuỳ theo sở thích VD: Registry hay Fields của Data.accdb
nhưng khi lưu Password đó đã mã hoá = tuỳ thích kiểu mã hoá ... phòng khi có thấy cũng chỉ nhìn

xong viết hàm so sánh mã hoá đó có thể sử dụng SHA256 hiện tại tạm an toàn .. trong Delphi tôi sử dụng hàm sau so sánh Password

function ValidatePasswordSHA256(const Password, HashedPassword: string) : Boolean;
 
Upvote 0
Lưu Password vào đâu đó thì tuỳ theo sở thích VD: Registry hay Fields của Data.accdb
Lưu địa chỉ Server và Database name chứ không phải password nhé. Người dùng không thể nào nhớ tham số này để mà gõ vô, để rồi so sánh với chuỗi mã hóa nhé. Xử lý password thì đã nói ở trên rồi.
 
Upvote 0
Có 1 cách là tung code lên, đặt mấy cái cần cất là xxx, yyy, zzz. Rồi nhờ nếu bí hoặc xin kỹ thuật giấu nếu biết.
 
Upvote 0
Có một kỹ thuật khác là làm rối code (Obfuscalator) để nhìn vô code cũng khônbg biết sửa sao :D. Phải lưu file gốc chứ không là tèo luôn.
 
Upvote 0
Lưu địa chỉ Server và Database name chứ không phải password nhé. Người dùng không thể nào nhớ tham số này để mà gõ vô, để rồi so sánh với chuỗi mã hóa nhé. Xử lý password thì đã nói ở trên rồi.
thì viết lại hàm thôi .. đơn giản thôi mà
Chọn mã hoá SHA256 + Keys tăng thêm phần bảo mật
 
Upvote 0
Cảm ơn bạn đã nhắc nhở. Code của mình thì cũng ko có gì ghê gớm cả. chỉ phục vụ chuyên môn công việc riêng thôi. Nhưng có điều quan trọng là trong file của mình sử dụng liên kết đến SQL Server của công ty. Nếu như bị bẻ khóa thì đồng nghĩa với việc bị lộ Server name, User, Pw. Đấy là điều tôi lo ngại nhất chứ tôi cũng ko tiếc gì mà ngại ngần chia sẻ cho các đồng nghiệp!
Bạn có cách nào mà khi bị bẻ khóa vẫn bảo vệ đc Server, User & Pw ko?
Bạn là thành viên của nơi đã cho bạn công ăn việc làm thì bạn có muốn để những việc gây hại cho tổ chức của mình ko???
Nếu là ích kỷ thì chỉ dành riêng cho bản thân mình dùng, chứ còn mang đi chia sẻ cho người khác dùng làm chi. Nếu như bạn làm ra 1 thứ hoặc ít nhất là cũng mất bao công sức tìm kiếm học hỏi để làm ra cho người khác sử dụng free rồi sau đó là mất dữ liệu, lộ thông tin..... Theo bạn cái đó có cần đc bảo vệ ko???
Mình đang xây dựng dự án cho công ty theo hướng của bạn, code vba và file excel thì mình không bảo mật gì cả, các bạn trong công ty nếu cần có thể tham khảo, mình chỉ bảo mật dữ liệu của công ty thôi. Cách bảo mật của mình là tạo User trên sql server chỉ có duy nhất quyền thực thi "execute" các stored procedure (Bạn tìm hiểu từ khóa "GRANT EXECUTE ON OBJECT::dbo.<Stored Procedure> to <User>). Người dùng (bình thường) nếu có biết thông tin server thì cũng không thể làm được gì nhiều cả.
 
Upvote 0
Cách bảo mật của mình là tạo User trên sql server chỉ có duy nhất quyền thực thi "execute" các stored procedure (Bạn tìm hiểu từ khóa "GRANT EXECUTE ON OBJECT::dbo.<Stored Procedure> to <User>). Người dùng (bình thường) nếu có biết thông tin server thì cũng không thể làm được gì nhiều cả.
Thực ra như bài trước của tôi là chỉ cần dấu User/Pass kết nối tới SQL SV là đủ rồi. Nhưng chủ thớt còn muốn dấu luôn địa chỉ server và Database đề phòng lộ User/pass thì cũng không biết đường mà kết nối tới máy chủ nên mới vẽ ra thêm Dll, obfuscator các kiểu... :D .
Theo như cách của bạn, nếu lộ User/pass thì kết nối vô chạy stored procedure DELETE, SELECT là mệt rồi (Tên SP lưu trong code VBA).
 
Upvote 0
Nếu họ có file thì có code giải mã trong đó + file mã hóa thì học cũng giải được đúng không bạn? hay có cách mã hóa khác mà tôi chưa hình dung ra.
Đâu có file mã hóa đâu bạn, tôi đề xuất lưu thông tin trên Registry mà.
 
Upvote 0
Đâu có file mã hóa đâu bạn, tôi đề xuất lưu thông tin trên Registry mà.
Tôi có đọc cái đề xuất này của bạn đó chứ nhưng bạn cũng có nói nếu người trong cty cố tình xâm nhập thì cũng không còn an toàn nữa. Họ lên chính cái máy đó trích xuất thông tin từ Registry.
Nói chung tôi thấy kiểu gì cũng chỉ an toàn tương đối, chắc phải dùng cái USB token đem theo bên người, cứ 30s thì đổi key 1 lần... :).
Bạn nói rõ thêm cách này nếu tôi hiểu sai.
Tôi thì chỉ dùng 2 tầng mật khẩu là MK đăng nhập SQL SV và mật khẩu đăng nhập vào ứng dụng là đủ đối với tôi rồi. Còn mà mất mật khẩu thì lo mà reset lại ngay.
 
Lần chỉnh sửa cuối:
Upvote 0
Thực ra như bài trước của tôi là chỉ cần dấu User/Pass kết nối tới SQL SV là đủ rồi. Nhưng chủ thớt còn muốn dấu luôn địa chỉ server và Database đề phòng lộ User/pass thì cũng không biết đường mà kết nối tới máy chủ nên mới vẽ ra thêm Dll, obfuscator các kiểu... :D .
Theo như cách của bạn, nếu lộ User/pass thì kết nối vô chạy stored procedure DELETE, SELECT là mệt rồi (Tên SP lưu trong code VBA).
Mình đang nói tới nhóm người dùng bình thường, bạn đang đề cập tới là người dùng có kiến thức IT nhưng có ý định phá rồi, nó lại nằm ở phần bảo mật của System Admin và Database Admin. Theo mình nghĩ nếu bạn có user/pass để đăng nhập 1 trang web và có API để thực thi các hàm liên quan xem, xóa, sửa thì cũng như vấn đề bạn nói lộ thông tin câu sp ở VBA thôi.
Cho trường hợp phá hoại như bạn nói, hướng mình đang xử lý:
Câu lệnh DELETE/UPDATE: Người dùng có quyền liên quan mới có thể thực thi 2 lệnh này, mình luôn để where tối thiểu với 2 điều kiện mới được thực thi, 2 điều kiện ấy tạo ra 1 unique key trong bảng đó.
Câu lệnh SELECT: nếu người dùng cố tình làm để chiếm dụng ram hay cpu thì có cách dò ra ip và block ip đó.
Nói chung là có nhiều cách để phá hoại và phòng chống lắm. Phương án cuối cùng của mình là backup database theo cơ chế Full-Differential-TransactionLog, mỗi 15 phút sẽ sao lưu 1 lần, bản sao lưu sẽ được backup qua Cloud thêm lần nữa. Nên khi server dính ransomeware đi nữa thì dữ liệu đã được sao lưu và không ảnh hưởng tới vận hành của công ty nhiều.
 
Upvote 0
Mình đang nói tới nhóm người dùng bình thường, bạn đang đề cập tới là người dùng có kiến thức IT nhưng có ý định phá rồi, nó lại nằm ở phần bảo mật của System Admin và Database Admin. Theo mình nghĩ nếu bạn có user/pass để đăng nhập 1 trang web và có API để thực thi các hàm liên quan xem, xóa, sửa thì cũng như vấn đề bạn nói lộ thông tin câu sp ở VBA thôi.
Cho trường hợp phá hoại như bạn nói, hướng mình đang xử lý:
Câu lệnh DELETE/UPDATE: Người dùng có quyền liên quan mới có thể thực thi 2 lệnh này, mình luôn để where tối thiểu với 2 điều kiện mới được thực thi, 2 điều kiện ấy tạo ra 1 unique key trong bảng đó.
Câu lệnh SELECT: nếu người dùng cố tình làm để chiếm dụng ram hay cpu thì có cách dò ra ip và block ip đó.
Nói chung là có nhiều cách để phá hoại và phòng chống lắm. Phương án cuối cùng của mình là backup database theo cơ chế Full-Differential-TransactionLog, mỗi 15 phút sẽ sao lưu 1 lần, bản sao lưu sẽ được backup qua Cloud thêm lần nữa. Nên khi server dính ransomeware đi nữa thì dữ liệu đã được sao lưu và không ảnh hưởng tới vận hành của công ty nhiều.
Lệnh DROP TABLE thì sao bạn?
Admin sợ nhất là người dùng để lổ hổng khiến kẻ phá hoại có thể dùng SQL injection.
Nếu dùng stored procedure (sp) thì sẽ vô hiệu hóa SQL Injection.
Admin chỉ việc kiểm soát quyền kết nối và chạy sp thôi.

Server không đủ mạnh mà chạy Differential Transaction log thì sẽ mửa mật. Phải cỡ một array máy, một chùm Ram, thúng đĩa. Bi giờ là đĩa SSD cũng đỡ, nhớ đên khoảng năm 1990 thúng đĩa này lớn như mấy cái lu nước sắp hàng, sau đó thì thâu lại còn cỡ cái tủ nhỏ. Đĩa SSD thì chỉ như một ram giấy.
 
Upvote 0
Lệnh DROP TABLE thì sao bạn?
Admin sợ nhất là người dùng để lổ hổng khiến kẻ phá hoại có thể dùng SQL injection.
Nếu dùng stored procedure (sp) thì sẽ vô hiệu hóa SQL Injection.
Admin chỉ việc kiểm soát quyền kết nối và chạy sp thôi.

Server không đủ mạnh mà chạy Differential Transaction log thì sẽ mửa mật. Phải cỡ một array máy, một chùm Ram, thúng đĩa. Bi giờ là đĩa SSD cũng đỡ, nhớ đên khoảng năm 1990 thúng đĩa này lớn như mấy cái lu nước sắp hàng, sau đó thì thâu lại còn cỡ cái tủ nhỏ. Đĩa SSD thì chỉ như một ram giấy.
Em phân quyền User chỉ duy nhất quyền thực thi "EXECUTE" câu SP đó thì user sẽ không thực thi "DROP" được thầy kể cả xem Table hay View, phải phân quyền user mới sử dụng được. Server công ty bên em đang sử dụng cho hiện tại 8core 16gb ram, xài cơ chế backup này mấy năm nay bình thường mà. Công ty em hoạt động vào giờ hành chỉnh là chủ yếu, Full thì em backup hàng tuần 1 lần lúc 12h khuya, thời điểm công ty không hoạt động, Differential thì mỗi ngày backup 1 lần cũng 12h khuya, còn Transaction thì mỗi 15p 1 lần, nó không chiếm dụng tài nguyên SQL server bao nhiêu hết thầy. Cơ chế backup cũng tùy thuộc vào mô hình hoạt động/độ lớn của công ty để canh giờ sao lưu cho hợp lý nữa, nếu công ty hoạt động 24/7 thì sẽ có cơ chế backup khác nữa thầy.
 
Upvote 0
Tôi có đọc cái đề xuất này của bạn đó chứ nhưng bạn cũng có nói nếu người trong cty cố tình xâm nhập thì cũng không còn an toàn nữa. Họ lên chính cái máy đó trích xuất thông tin từ Registry.
Nói chung tôi thấy kiểu gì cũng chỉ an toàn tương đối, chắc phải dùng cái USB token đem theo bên người, cứ 30s thì đổi key 1 lần... :).
Bạn nói rõ thêm cách này nếu tôi hiểu sai.
Tôi thì chỉ dùng 2 tầng mật khẩu là MK đăng nhập SQL SV và mật khẩu đăng nhập vào ứng dụng là đủ đối với tôi rồi. Còn mà mất mật khẩu thì lo mà reset lại ngay.
Giả dụ 1 user khác có quyền Insert, Update, Delete bị lộ thì họ cũng ko biết đc ServerName và DatabaseName để can thiệp. Mà ServerName và DatabaseName thì phải để trong Code VBA.
@ongke0711 Theo tôi hiểu là thớt muốn giấu ServerName và DatabaseName để nếu chẳng may Username và Password bị lộ mà ServerName và DatabaseName vẫn được bảo mật thì hệ thống vẫn an toàn.

Do đó tôi đề xuất mã hóa ServerName và DatabaseName sau đó lưu chuỗi mã hóa vào Registry. Khi code thực thi sẽ đọc chuỗi mã hóa này và giải mã lấy ServerName và DatabaseName.

Với cách làm trên nếu file excel bị rò rỉ và bị bẻ khóa thì 'kẻ gian' cũng không lấy được ServerName và DatabaseName do Registry không có chuỗi mã hóa. Người dùng bình thường thì sẽ không thấy được ServerName và DatabaseName do thông tin lưu vào Registry đã bị mã hóa.

Giải pháp này chỉ để giảm thiểu rủi ro khi file bị lọt ra ngoài, nếu người trong công ty được phân quyền truy cập server để làm việc mà muốn phá thì khó mà đỡ được.
 
Upvote 0
@ongke0711 Theo tôi hiểu là thớt muốn giấu ServerName và DatabaseName để nếu chẳng may Username và Password bị lộ mà ServerName và DatabaseName vẫn được bảo mật thì hệ thống vẫn an toàn.

Do đó tôi đề xuất mã hóa ServerName và DatabaseName sau đó lưu chuỗi mã hóa vào Registry. Khi code thực thi sẽ đọc chuỗi mã hóa này và giải mã lấy ServerName và DatabaseName.

Với cách làm trên nếu file excel bị rò rỉ và bị bẻ khóa thì 'kẻ gian' cũng không lấy được ServerName và DatabaseName do Registry không có chuỗi mã hóa. Người dùng bình thường thì sẽ không thấy được ServerName và DatabaseName do thông tin lưu vào Registry đã bị mã hóa.

Giải pháp này chỉ để giảm thiểu rủi ro khi file bị lọt ra ngoài, nếu người trong công ty được phân quyền truy cập server để làm việc mà muốn phá thì khó mà đỡ được.
Chính xác là vậy. Do đó tôi mới nói thêm là trường hợp người nội bộ có ý gian và có thể ngồi vào những máy có lưu thông tin trong registry. Tôi nghĩ các lưu luôn vào dll thì an toàn hơn. Mỗi khi có thay đổi thông tin server thì gửi file dll để cập nhật.
À mà cách này cũng không an toàn…:D
 
Lần chỉnh sửa cuối:
Upvote 0
Để ở đâu thì cũng phải gọi từ vba ,gốc không chắc thì rễ cũng bung!
 
Upvote 0
Để ở đâu thì cũng phải gọi từ vba ,gốc không chắc thì rễ cũng bung!
Công ty này chắc chắn là bung gốc, rễ, lẫn cành lá rồi.
Kiểu bảo mật code thế này là làm áp lực với chủ. Thớt mà nổi giận bỏ đi thì công ty mất một đống files và dữ liệu.
 
Upvote 0

Bài viết mới nhất

Back
Top Bottom