Bảo mật trong VBA

Liên hệ QC
Status
Không mở trả lời sau này.

yeudoi

Thành viên gắn bó
Thành viên BQT
Moderator
Tham gia
12/6/06
Bài viết
3,167
Được thích
7,608
Chào các sư phụ cho em hỏi làm sao để đặt pass trong VBA nhưng khi mình kích vào thì nó báo: Project unviewable. Mong được chỉ giáo
 
Bạn đã đặt pass rồi thì nó báo như vậy là đúng. Muốn không hiện thì không đặt pass nữa, khi đó code sẽ phơi ra thôi. :.
 
PhanTuHuong hiểu sai ý mình rồi. Ý mình là làm sao để làm được như vậy chứ không phải là gỡ bỏ pass.
 
Cái đó rất nhiều người mong muốn làm được. Bạn thử google: Excel + "Project unviewable" xem sao :)
 
Thế thì đơn giản quá.

Bạn vào Tools/Protection/Protect and Share Workbook

Sau đó khai pass là được.

Sau đó bạn vào macro thì nó sẽ hiện lên như bạn hỏi thôi (file ví dụ kèm theo).
 
Lần chỉnh sửa cuối:
Hình như không phải thế.

Ý của yeudoi là làm thế nào để đặt pws cho các code VBA mà khi mở ra không thể bật ra được vì không có chỗ để gõ pws ấy. Làm như thế thì ngay cả tìm được pws cũng ko thể mở được.

Hic, ko biết có đúng ko. Mình chỉ "nghe nói" thế thôi. Vụ này bạn cứ hỏi anh levanduyet ấy. Anh ấy đã từng nghiên cứu nhưng ko biết đã tìm ra vụ này chưa.
 
Lần chỉnh sửa cuối:
Đúng rồi Hai2Hai nói đúng ý mình rùi đó. Có lẽ mình phải nhờ thêm sư phụ Lê Văn Duyệt quá.
 
Hình như vấn đề này đã được bạn Tuân nghiên cứu thành công rồi, bạn thử hỏi xem.
 
Các bạn làm thử thế này nhé.
+ Đặt path trong VBA
+ Vào menu Tools\ chọn Share Workbook...
+ Bạn hãy cùng mở trên ít nhất 2 máy tính (hoặc một máy mở bằng 2 instance)
+ Khi đã mở như trên bạn vào VBA xem có phải bị "Project unviewable" không?

Vấn đề ở đây chúng tạo ra một "lỗi" mà MS EXCEL cho là lỗi, khi đó nó không cho mở form để nhập pass gọi là "Project unviewable". Vấn đề ở đây "lỗi" chúng ta vẫn dùng được chú không phải lối mà debug phát hiện ra.
 
Để hiện thông báo "Project unviewable", các bạn dịch tạm bản Tiếng Anh (để nâng cao ngoại ngữ- Lập trình mà mù ngoại ngữ thì như loài chim không có cánh mà thôi) và làm theo sẽ giải quyết được vấn đề. Nhưng lưu ý khi thực hiện như vậy sẽ không mở để sửa mã nguồn VBA của mình theo cách thông thường nhập mật mã được đâu. Muốn mở nó (tất nhiên đã khóa được thì tất phải mở được) phải dùng xảo thuật lập trình để bỏ khóa (ai chưa biết liên hệ với tôi để nhận giải đáp- Vì điều này liên quan đến việc bẻ khóa của các phần mềm lập VBA). Đọc cái ni để biết thêm:
Have you ever tried to open the VBA project of an Excel add-in just to be faced with a message box that said "Project is unviewable" instead of seeing the familiar password entry box ?
This type of security measure is based on the concept of "sharing" an add-in workbook. I stumbled on this particular method when I was working with a group of shared workbooks and tried to edit a VBA procedure in one of my userforms. I noticed that a shared workbook displayed the very same message box when I tried to open its VBA Project. As a matter of fact, Excel actually displays a warning message stating that macros cannot be viewed or edited in a shared workbook when sharing is turned on. This was my first clue as to what was being done. I kept trying and was able to find a method of locking the VBA project of an add-in workbook. As I learned early on, there are many different ways within Excel to accomplish the same goal.
Here, I explain the method that worked for me.
Important points to remember before starting:
This method is based on the concept of "sharing" an Excel add-in file

It was tried and tested with Excel 8 (97) and Excel 10 (2002)

Keep a back-up copy of your original (.xls) file

The VBA project locked with this method will be permanently locked against viewing or editing

The only way to update the VBA code will be to edit it in the original .xls workbook and then create a new add-in to replace the old one or you will have to create a VBA procedure in another workbook to make the add-in visible so it can be unshared

The best technique is to also protect your add-in's VBA project with a password

This method appears to exploit a bug in Excel
Start with an Excel workbook (.xls) that you want to turn into an add-in.

Save this workbook as an add-in. Use File>Save As... then select add-in from the "Save As type" dropdown list.

Close the .xls workbook.

Open the new add-in file you just created.

Open the VBE window by pressing Alt+F11.

Find your add-in file in the Project Explorer window and lock your project for viewing with a password.

Select the "ThisWorkbook" object and set its "IsAddin" property to False. This will unhide the worksheets in this add-in workbook.

Activate the Excel application window.

Select Tools>Share Workbook..., on the Editing tab check the box to share this workbook. Press OK to close.

Press OK to save and share this workbook.

Press OK to acknowledge the fact that macros cannot be viewed in a shared workbook.

Verify that [Shared] appears in the title bar after the file name.

Save this workbook again as an add-in. Select File>Save As..., then delete the quotation marks and the .xla extension from the filename. Select add-in from the "Save as type:" dropdown list.

Press Save, then press "Yes" to overwrite existing file.

Close this workbook and press "No" to not save changes.

Select File>Open, then browse to find and open your new add-in file. This add-in will open the same as any other Excel add-in with all of its sheets being hidden.

Press Alt+F11 to open the VBE window.

Find your add-in in the Project Explorer window and click to expand it's object tree.

You will see a message box titled "Project Locked" that displays the following message: "Project is unviewable". There will not be a password textbox only an "OK" and "Help" button.

You can open the add-in's locked VBA project by opening a new workbook and creating a VBA procedure to set the IsAddin property of the ThisWorkbook object of the add-in to False and then unshare the add-in workbook
 
Bạn nào muốn bảo mật cả chương trình Excel thì la lên bạn nhe', mình sẽ post bài hướng dẫn :).Điều mà mình muốn nói đến đó là khi mình mở Excel lên sẽ xuất hiện 1 form để login vào Excel. Nếu gõ ko đúng ID và pass sẽ hiện thông báo và đóng Excel. Chỉ có những ai có ID và pass thì mới sử dụng được. Hướng của mình là sẽ phân quyền sử dụng excel luôn, người nhập liệu thì chỉ có quyền nhập liệu mà thôi, admin sẽ được toàn quyền sử dụng excel hehe :). Điều này cũng đơn giản thôi nhưng do cv bận quá nên làm piếng làm. Ai có hứng thú thì post bài thảo luận chơi
 
Cái này hơi bị khó đấy bác ạ. Nếu viết bằng VBA hoặc sử dụng công cụ Digital Certificate for VBA Projects thì chỉ cần Disable Macro là được. Không biết bác có cao kiến gì không ?
 
Mọi người phải hiểu nghĩa của từ "bảo mật" trong ứng dụng phần mềm chứ ko mỗi người nói 1 kiểu đâm ra chẳng ai hiểu ai:

- Bảo mật lisence (làm sao để chống sử dụng trái phép PM)
- Bảo mật mức ứng dụng (cái mà lachinhan nói tới: ai được phép thực hiện công việc nào trong chương trình,...)
- Bảo mật mức hệ thống (ví dụ: làm sao để vượt qua bảo mật của hệ điều hành, còn đối với Excel thì làm sao để ko mở được VBA,...)
- Bảo mật mức CSDL (ví dụ: làm sao để tránh mọi người có thể truy cập trực tiếp 1 cách trái phép vào database. Đối với Excel thì làm sao để mọi người ko vào được các file chứa dữ liệu - sử dụng pws liệu có đảm bảo hay ko??)
- Bảo mật mức mạng (LAN, WAN, Internet: Firewall, v.v...)
- Bảo mật mức hành chính (dùng khóa cửa, xích sắt to đùng :D để chống kẻ trộm đột nhập trái phép vào phòng chứa dữ liệu hoặc phần mềm,...)

Đấy, sơ qua có ngần đấy cái mà người ta gọi là Security policy của phần mềm. Từ đó bạn sẽ suy ra đâu là cái bảo mật của các bạn. Tránh mỗi người nói 1 ý.
 
MrHieu đã viết:
Cái này hơi bị khó đấy bác ạ. Nếu viết bằng VBA hoặc sử dụng công cụ Digital Certificate for VBA Projects thì chỉ cần Disable Macro là được. Không biết bác có cao kiến gì không ?

Mình ko biết ý bạn Disable macro bằng cách nào, để mình đưa ra các tình huống nhé
+ Tắt Add in của Excel ===> không tắt được đâu bạn, vì bạn login sai ID và pass thì làm sao vào Excel được mà tắt.
+ Vào được Excel với ID của nhân viên nhập liệu cũng không tắt được Add in vì ID này bị hạn chế chức năng sử dụng Excel, chủ yếu là chỉ nhập liệu thôi. Để hạn chế chức năng sử dụng bạn khi load add in bạn deletle menu mặc định của Excel và khời tạo lại Menu theo ý mình, sau đó block luôn menu, khi block menu luôn nên ko thể vào customize để chỉnh được nữa. Hoặc Có thể xóa hết tất cả các menu của Excel, chỉ cần menu popup là đủ nhập liệu rồi :).
+ Còn 1 cách nữa để disable nè, bạn delelte luôn cái file add in hehe :). để giải quyết vấn đề này chỉ cần ko cho delete file là xong, cái này thuộc về bảo mật mạng hệ thống mình ko muốn đề cập nhiều ở đây.
+ Các cuối cùng Dùng BKAV quét sạch sẽ macro đi :) hehe.

Với 2 trường hợp cuối thì hết ý kiến luôn :). Vấn đề bảo mật của mình nói đến ở đây cũng chỉ tương đối thôi. Add in được viết ra để xài thôi ko phải để phá, mà có phá thì cũng bị kỹ luật hà (vấn đề bảo mật chủ yếu được áp dụng ở các công ty, cơ quan thôi, mà ở những nơi này phá hoại thì bị kỹ luật như chơi), mà chỉ những người viết được add in cho excel mới hiểu rõ mà vô hiệu được nó.
mình nghĩ với trình độ của nhân viên nhập liệu, và cán bộ văn phòng .... là không thể. Chỉ 1 số ít người am hiểu về VBA for Excel thui như mình chẳng hạn :). Nếu trong phòng có người hiểu biết về VBA thì nếu Add in bị xóa là nó phá chứ ko ai khác hehe, chủ yếu là do ý thức của mỗi người thôi.
Vấn đề về bảo mật là bao la, ko có bảo mật nào mà không có lổ hỏng cả phải ko bạn, hack - crack đầy ra đó.

Thôi làm việc đây khi nào rãnh lên post bài tiếp
 
hai2hai đã viết:
Mọi người phải hiểu nghĩa của từ "bảo mật" trong ứng dụng phần mềm chứ ko mỗi người nói 1 kiểu đâm ra chẳng ai hiểu ai:

- Bảo mật lisence (làm sao để chống sử dụng trái phép PM)
- Bảo mật mức ứng dụng (cái mà lachinhan nói tới: ai được phép thực hiện công việc nào trong chương trình,...)
- Bảo mật mức hệ thống (ví dụ: làm sao để vượt qua bảo mật của hệ điều hành, còn đối với Excel thì làm sao để ko mở được VBA,...)
- Bảo mật mức CSDL (ví dụ: làm sao để tránh mọi người có thể truy cập trực tiếp 1 cách trái phép vào database. Đối với Excel thì làm sao để mọi người ko vào được các file chứa dữ liệu - sử dụng pws liệu có đảm bảo hay ko??)
- Bảo mật mức mạng (LAN, WAN, Internet: Firewall, v.v...)
- Bảo mật mức hành chính (dùng khóa cửa, xích sắt to đùng :D để chống kẻ trộm đột nhập trái phép vào phòng chứa dữ liệu hoặc phần mềm,...)

Đấy, sơ qua có ngần đấy cái mà người ta gọi là Security policy của phần mềm. Từ đó bạn sẽ suy ra đâu là cái bảo mật của các bạn. Tránh mỗi người nói 1 ý.

hai2hai nói chí phải, đúng là đại ca của 4r, không biết nói gì hơn là " hảo hảo A, tại hạ khâm phục khâm phục "
 
lachinhan đã viết:
…….mình nghĩ với trình độ của nhân viên nhập liệu, và cán bộ văn phòng .... là không thể.Chỉ 1 số ít người am hiểu về VBA for Excel thui như mình chẳng hạn :)

Quả thực mình nghĩ bạn rất giỏi (nếu không muốn nói là cực giỏi) về VBA. Bởi những người amatuer như tụi mình chưa ai dám nói như vậy. Nếu vậy thì những lời sau đây nếu mình có nói sai thì mong thông cảm và mong được chỉ bảo (bởi mình biết bạn giỏi hơn mình rất nhiều - Về lập trình)

Từ khi mình mới tiếp cận với excel thì mình chỉ nghĩ nó là một bảng tính không hơn không kém (không có chuyện lập trình hay chạy nền hay gì gì đó). Vì thế mình nghĩ excel thật là đơn giản.
Nhưng khi mình tham gia diễn đàn và đặc biệt là được tiếp cận với phần mềm VNUNI® A-Excel của A Tuân thì mình mới thấy excel còn làm được nhiều việc lắm. Và mình cũng chỉ nghĩ rằng nếu giới hạn trong VBA (không dùng ngôn ngữ khác) thì VNUNI® A-Excel đã là một đỉnh cao (mình nghĩ là VNUNI® A-Excel không chỉ dựa vào VBA đâu ??).

Mình đã tham khảo một số chương trình excel lúc chạy khởi đầu cũng hiện ra form (khởi động = VBA) đòi nhập pw, nhưng khi không cho thi hành VBA (bằng cách này hay bằng cách khác) thì ta vẫn có thể truy nhập vào file đó được.

Rất nhiều phần mềm của hãng thứ 3 bây giờ cho phép ta cho phép người dùng được chạy cái này, không được chạy cái khác (trong HĐH) và xưa nay mình chỉ nghe nói là phân quyền trong windows, trong mạng; trong CSDL … chứ chưa thấy phân quyền trong excel. Không phải là không thể nhưng mình nghĩ là không đáng (phải làm) như vậy. Vì trong một công ty, Excel không chỉ dùng để chạy mỗi một chương trình (nếu có thì đó chỉ là cá biệt)
Nếu chỉ phân quyền khi file đó khởi động thì đúng như bạn nói là phải tạo ra add-in; chỉ khi chạy file đó thì add-in mới khởi động. Và khi khởi động thì nó sẽ làm các công việc như bạn đã trình bày (VNUNI® A-Excel cũng làm như vậy mà thôi). Vấn đề là không cho xóa add-in đó (phân quyền trong HĐH, LAN, protect folder….). Khi đó muốn phá cũng không được (cài BKAV hay cái khác ư ? đâu có quyền install đâu mà cài, chạy bất cứ chương trình (dù là Portable ) nào khác ngoài danh sách cho phép cũng đều bị ngăn lại)

Nhưng cái mà mình muốn nói đến không phải là chuyện đó, mà đó là chuyện 1 file excel bình thường (chỉ dùng VBA) thì có làm được như vậy hay không ? (giả sử bạn đưa lên 1 file rồi mình tải về máy mình, và mình toàn quyền “vọc”), và hơn nữa có đáng như vậy hay không thôi.[FONT=&quot](Vì nếu đến trình độ đó thì hãy dùng Excel như là một report của các CSDL khác)

Nếu có thể bạn hãy cho 1 file VD đi.
Thân!
[/FONT]
 
Lần chỉnh sửa cuối:
MrHieu đã viết:
Quả thực mình nghĩ bạn rất giỏi (nếu không muốn nói là cực giỏi) về VBA. Bởi những người amatuer như tụi mình chưa ai dám nói như vậy. Nếu vậy thì những lời sau đây nếu mình có nói sai thì mong thông cảm và mong được chỉ bảo (bởi mình biết bạn giỏi hơn mình rất nhiều - Về lập trình)

Hehe !! mình chỉ nói chi vui thôi, mình cũng chỉ là dân Amatuer thui, Mình là 1 cử nhân kinh tế và nghề nghiệp chính của mình là 1 nhân viên làm về lãnh vực Xuất Nhập khẩu và Ngân Hàng. Tin học chỉ là niềm đam mê của mình, mặc dù có lúc mình đã định chuyển hẳn sang làm IT. Tin học chỉ có Quản trị mạng là mình có qua trường lớp còn lập trình thì chỉ là tự học thôi bạn à. Bạn nói vậy mình thấy nhột quá hehe, .... Việc bảo mật như mình nói xuất phát từ cơ quan củ của mình... mình phải đi công tác trong 2 ngày, khi nào về sẽ trao đổi thêm . bạn cho mình địa chỉ mail để có gì mình gửi cho bạn 1 số file và chương trình. Mình có 1 chương trình decomplite tất cả các Add in, add in có cài pass nó bẻ khóa hết, có thể xem suorce thoải mái. mail của mình lachinhan@gmail.com
Chúc bạn vui
Thân
 
Chỉnh sửa lần cuối bởi điều hành viên:
lachinhan đã viết:
Bạn nào muốn bảo mật cả chương trình Excel thì la lên bạn nhe', mình sẽ post bài hướng dẫn :).Điều mà mình muốn nói đến đó là khi mình mở Excel lên sẽ xuất hiện 1 form để login vào Excel. Nếu gõ ko đúng ID và pass sẽ hiện thông báo và đóng Excel. Chỉ có những ai có ID và pass thì mới sử dụng được. Hướng của mình là sẽ phân quyền sử dụng excel luôn, người nhập liệu thì chỉ có quyền nhập liệu mà thôi, admin sẽ được toàn quyền sử dụng excel hehe :). Điều này cũng đơn giản thôi nhưng do cv bận quá nên làm piếng làm. Ai có hứng thú thì post bài thảo luận chơi


http://www.giaiphapexcel.com/forum/showthread.php?t=823

Bạn có thể xem qua ở đây!
 
TuanVNUNI đã viết:
Các bạn làm thử thế này nhé.
+ Đặt path trong VBA
+ Vào menu Tools\ chọn Share Workbook...
+ Bạn hãy cùng mở trên ít nhất 2 máy tính (hoặc một máy mở bằng 2 instance)
+ Khi đã mở như trên bạn vào VBA xem có phải bị "Project unviewable" không?

Vấn đề ở đây chúng tạo ra một "lỗi" mà MS EXCEL cho là lỗi, khi đó nó không cho mở form để nhập pass gọi là "Project unviewable". Vấn đề ở đây "lỗi" chúng ta vẫn dùng được chú không phải lối mà debug phát hiện ra.

Cám ơn bác đã chỉ dẫn. Tuy nhiên cho em hỏi 1 câu. Thế nếu file excel sau khi tạo "Project unviewable" mà lại gi thành file .xla thì khi muốn quay lại chỉnh sửa code VBA thì phải làm thế nào?
 
Khi đã chuyển về *.xla mà bị "Project unviewable" thì phải có phần mềm phá pass thôi.
 
Status
Không mở trả lời sau này.
Web KT
Back
Top Bottom