Cách build app nodejs bảo mật cao @@!!
Hello ae! mình có 1 cái app electronjs cho cty của mình! khi build ra file cài đặt .msi mình dùng electron-packager + electron-wix-msi.
- Nhưng khi chạy file cài đặt app trên máy khác thì thư mục root của app trên window có 1 file app.asar
- Mình tìm hiểu thì thấy file .asar đấy chính là folder resource của mình và hoàn toàn có thể giải nén ra được, mấy file config toàn key nhạy cảm đều lộ hết cả
- Nay lên đây hỏi ae xem có cách nào build app an toàn, bảo mật hơn không (
3 CÂU TRẢ LỜI
Một ứng dụng Electron bản chất chỉ là trình duyệt Chromium headless, nén sẵn cùng với tài nguyên html, css, js,... như một trang web thông thường. Vậy việc giữ bảo mật cho đống asset kia cũng như cách bạn bảo vệ các asset html, css, js trên trang web của bạn không cho người khác đọc.
Nói cách khác là điều đấy là rất khó, bởi những thứ này vốn đã ở sẵn trong máy của người dùng rồi. Bạn không thể đưa cho người ta cả cái két sắt + chìa khóa nhưng lại muốn ngăn họ đừng mở cái két đó ra được. Bạn có thể minify và obfuscate mã nguồn, nhưng một ngươi đủ giỏi vẫn có thể deobfuscate nó như thường. Điều này cũng đúng không chỉ với nodejs hay javascript, mà những file apk của android, hay app binary hoàn toàn cũng có thể dịch ngược được thôi.
Cách tốt nhất là luôn cho rằng mã nguồn ứng dụng của bạn cho người dùng sử dụng trong máy hoàn toàn mở và bất cứ ai cũng đọc được. Từ đó, bạn đưa các logic hay những dữ liệu nhạy cảm cho phía backend quản lý và trả về ứng dụng.
Có một số cách để encrypt file ASAR hay các dữ liệu quan trọng cho Electron, nhưng mình nghĩ nó cũng không thể bảo vệ 100%, vì như mình nói ở trên, cái chìa khóa (key để giải mã) vẫn là do người dùng giữ và ở trên máy của người dùng.
dùng ngôn ngữ khác (mấy dữ liệu nhạy cảm thì dùng ngôn ngữ khác build module như c/c++ hoặc go)
)
Bạn có thể miêu tả một chút về
được không Chúng là những key gì, và tại sao bạn lại cần phải đưa thông tin đó vào source code của mình thế
Có lẽ vấn đề không phải ở chỗ người dùng có thể đọc được source code của ứng dụng electron của bạn, mà là ở chỗ bạn đã để những thông tin nhạy cảm vào bên trong một ứng dụng kiểu frontend như vậy
Tức thay vì tìm cách giấu chúng đi để người dùng khó tìm, hay khó đọc được hơn, bạn chỉ cần tìm cách không phải đưa chúng vào bên trong source code nữa, mà ứng dụng vẫn chạy được bình thường, là được.