Tôi muốn cấp cho người dùng trang web quyền truy cập chỉ đọc vào cơ sở dữ liệu SQLite3 mà không cho phép họ ghi vào cơ sở dữ liệu hoặc làm bất kỳ thiệt hại nào khác. Làm sao?Cơ sở dữ liệu sqlite3 chỉ đọc an toàn
Làm cho tệp db chỉ đọc giúp một chút, nhưng các lệnh như "ATTACH", ".load" và ".output" cho phép mọi người đọc/ghi các tệp khác, có thể không được bảo vệ.
Tất nhiên, nếu tôi biết tất cả các lệnh như vậy, tôi chỉ lọc chúng, nhưng tôi hầu như lo lắng về các lệnh mà tôi chưa từng nghĩ tới.
Tôi đã thử một thời gian ngắn để thay đổi mã nguồn của sqlite3 để không cho phép viết, nhưng điều này khó hơn: ngay cả câu lệnh SELECT cũng xuất hiện để làm một số INSERTS nội bộ/etc.
Lưu ý:Tôi đã xem xét các cuộc tấn công của DOS và sẽ mất đến 5 giây hoặc điều gì đó. Mối quan tâm chính của tôi là thiệt hại cho các tập tin/"hack", không phải DOS.
chroot() có thể hoạt động, nhưng có vẻ cực đoan.
Suy nghĩ?
EDIT: Chà, tôi có thực sự hỏi từ 3 năm trước không?
Kể từ đó, I've actually written a program to do this.
mà tôi nghĩ là an toàn hợp lý (nhưng tôi có thể là sai).
Tôi đoán tôi thực sự đang tìm kiếm một "giải pháp meta" ở đây. Ví dụ, nếu tôi chạy toàn bộ hệ thống của tôi ra khỏi một đĩa CD chỉ đọc, tôi sẽ không phải lo lắng về những gì sqlite3 có thể/không thể làm. Đó là quá khắc nghiệt trong trường hợp của tôi, nhưng ý tưởng chung là tôi muốn tìm một giải pháp hoạt động w/o tùy thuộc vào các thuộc tính sqlite3. – barrycarter