- [C#] Cách Sử Dụng DeviceId trong C# Để Tạo Khóa Cho Ứng Dụng
- [SQLSERVER] Loại bỏ Restricted User trên database MSSQL
- [C#] Hướng dẫn tạo mã QRcode Style trên winform
- [C#] Hướng dẫn sử dụng temp mail service api trên winform
- [C#] Hướng dẫn tạo mã thanh toán VietQR Pay không sử dụng API trên winform
- [C#] Hướng Dẫn Tạo Windows Service Đơn Giản Bằng Topshelf
- [C#] Chia sẻ source code đọc dữ liệu từ Google Sheet trên winform
- [C#] Chia sẻ source code tạo mã QR MOMO đa năng Winform
- [C#] Chia sẻ source code phần mềm lên lịch tự động chạy ứng dụng Scheduler Task Winform
- [Phần mềm] Tải và cài đặt phần mềm Sublime Text 4180 full version
- [C#] Hướng dẫn download file từ Minio Server Winform
- [C#] Hướng dẫn đăng nhập zalo login sử dụng API v4 trên winform
- [SOFTWARE] Phần mềm gởi tin nhắn Zalo Marketing Pro giá rẻ mềm nhất thị trường
- [C#] Việt hóa Text Button trên MessageBox Dialog Winform
- [DEVEXPRESS] Chia sẻ code các tạo report in nhiều hóa đơn trên XtraReport C#
- [POWER AUTOMATE] Hướng dẫn gởi tin nhắn zalo từ file Excel - No code
- [C#] Chia sẻ code lock và unlock user trong domain Window
- [DEVEXPRESS] Vẽ Biểu Đồ Stock Chứng Khoán - Công Cụ Thiết Yếu Cho Nhà Đầu Tư trên Winform
- [C#] Hướng dẫn bảo mật ứng dụng 2FA (Multi-factor Authentication) trên Winform
- [C#] Hướng dẫn convert HTML code sang PDF File trên NetCore 7 Winform
[C#] Đặt mật khẩu bảo vệ cho database Sqlite
Bài viết hôm nay, mình sẽ tiếp tục hướng dẫn các bạn cách bảo vệ database sqlite bằng cách đặt mật khẩu trong lập trình C#.
Khi thiết kế ứng dụng, để lưu trữ một số dữ liệu nhỏ thì người ta hay dùng XML, JSON hoặc SQLite. Các phương pháp lưu trữ này có ưu điểm là có tính di động (portable) cao, không yêu cầu máy tính phải cài thêm Hệ quản trị cơ sở dữ liệu nào khác. Lưu trữ ở dạng này thì thường là dữ liệu thô ở dạng plain-text, không được mã hóa.
Vì vậy để bảo vệ dữ liệu lưu trong các định dạng này thì người ta hay sử dụng một hay kết hợp nhiều kỹ thuật mã hóa để tránh dữ liệu bị nhòm ngó, có thể kể đến là đặt mật khẩu kết nối đến DB SQLite, mã hóa AES… Bài viết này sẽ nói về SQLite ver 3 do từ phiên bản này SQLite mới hỗ trợ mật khẩu.
Một số phương pháp mã hóa DB SQLite
- Trước hết là note lại một số gợi ý về một số phương pháp kết hợp mã hóa database SQLite:
- SEE – Mất phí
- wxSQLite
- SQLCipher – Mã nguồn mở, sử dụng openSSL để mã hóa dữ liệu.
- SQLiteCrypt – Mất phí
- botansqlite3 – Miễn phí, mã hóa SQLite3 bằng thuật toán Botan.
- SQLiteCrypto – Mất phí, SQLiteCrypto mã hóa DB bằng AES-256 và SHA-256
Bảo vệ DB bằng mật khẩu
Bây giờ là cách bảo vệ DB SQLite bằng mật khẩu, lúc này dữ liệu sẽ được mã hóa theo thuật toán RSA. Cách này đơn giản nhất, nhưng nếu một ai đó cố dịch lại chương trình của bạn thì có thể tìm thấy password. Ít nhất thì chúng ta vẫn có thể tự bảo vệ trước một số thanh niên manh động, còn đối với cao thủ thì… mấy chương trình cả đống tiền còn bị crack cơ mà. Lo lắng mà làm gì! :)
Cài đặt mật khẩu cho DB
SQLiteConnection _dbConn = new SQLiteConnection("Data Source=Database.db;Version=3;");
_dbConn.SetPassword("password");
_dbConn.Open();
//......
_dbConn.Close();
Sau khi cài đặt rồi thì đã đến lúc sử dụng
SQLiteConnection _dbConn = new SQLiteConnection("Data Source=MyDatabase.sqlite;Version=3;Password=password;");
_dbConn.Open();
//.....
_dbConn.Close();
Có thể thêm phần password vào chuỗi connection string
connectionString += "Password=" + thePassword + ";";
Thay đổi mật khẩu
SQLiteConnection _dbConn = new SQLiteConnection("Data Source=MyDatabase.sqlite;Version=3;Password=old_password;");
_dbConn.Open();
_dbConn.ChangePassword("new_password");
_dbConn.Close();
Xóa bỏ mật khẩu
SQLiteConnection _dbConn = new SQLiteConnection("Data Source=MyDatabase.sqlite;Version=3;Password=old_password;");
_dbConn.Open();
_dbConn.ChangePassword(""); //OR _dbConn.ChangePassword(String.Empty);
_dbConn.Close();
Lưu ý: Khi bạn thêm mật khẩu vào DB rồi thì sẽ khó có thể đọc được trên một số phần mềm quản lý DB SQLite.