CouchDB có một cơ chế để ngăn chặn việc ghi trái phép.CouchDB - ngăn chặn đọc trái phép
Nó cũng có thể ngăn chặn đọc trái phép không?
CouchDB có một cơ chế để ngăn chặn việc ghi trái phép.CouchDB - ngăn chặn đọc trái phép
Nó cũng có thể ngăn chặn đọc trái phép không?
Có, CouchDB có thể ngăn chặn đọc trái phép. Thật không may, nó là hơi đơn giản.
Hãy tưởng tượng ứng dụng đấu giá bí mật. Bạn đặt giá thầu 20 đô la và tôi đặt giá thầu 10 đô la; mỗi giá thầu trong tài liệu đi văng. Couch cho phép chúng tôi đọc tài liệu giá thầu của riêng mình nhưng không có tài liệu nào khác. Tuy nhiên, có chế độ xem bản đồ-giảm hiển thị mức trung bình. Tôi tải chế độ xem và thấy rằng mức trung bình là 15 đô la, vì vậy tôi kết luận rằng giá thầu của bạn là 20 đô la và tôi đã vi phạm chính sách bảo mật. Xem đầu ra có thể làm rò rỉ một số hoặc tất cả thông tin của tài liệu. Không thể thực thi bảo mật ở cấp tài liệu. Đó là lý do tại sao truy cập đọc ở cấp cơ sở dữ liệu.
Tôi biết, nó rất tệ. Nhưng đó là câu trả lời đúng, có thể mở rộng.
Đây là một phần lý do triết lý Couch là tạo nhiều cơ sở dữ liệu — thậm chí một (hoặc nhiều hơn!) Cho mỗi người dùng. Quyền đọc cho cơ sở dữ liệu được đặt trong giá trị readers
của cơ sở dữ liệu đối tượng _security
. (Lưu ý, lĩnh vực readers was renamed to members trong CouchDB thân bởi vì nó cũng chỉ rõ những người có thể viết thư cho DB.)
Kỹ thuật này làm việc như thế này:
_security
.validate_doc_update
.)?filter=my_filter_function
.Tất nhiên, đây là tất cả cho một ứng dụng Couch thuần túy, nơi người dùng truy cập trực tiếp vào Couch. Nếu bạn có một lớp giữa (bộ điều khiển MVC, hoặc chỉ là một proxy HTTP ngược), thì bạn có thể thực thi chính sách ở đó, giữa người dùng và chiếc ghế dài. Nhưng hãy cẩn thận. Ví dụ: chức năng _show
hoặc quy tắc _rewrite
có thể cho phép người dùng tải chế độ xem hoặc tài liệu bất chấp chính sách của bạn.
Chúc may mắn!
Cảm ơn! Bạn có thể giải thích về cách _show và _rewrite có thể cắn tôi không? Ngoài ra, làm cách nào để tránh các điều kiện chủng tộc như "không kết bạn với ai đó -> tải lên ảnh" và chắc chắn 100% rằng người không kết bạn không bao giờ có thể xem ảnh đó? – nornagon
Vâng, giả sử bạn có proxy ngược lại cho phép/từ chối quyền truy cập trên mỗi tài liệu cho mỗi người dùng dựa trên URL. Sau đó, bạn thêm một tính năng mới bằng cách sử dụng hàm _list và tất cả các truy vấn _list đều được proxy cho phép. Người dùng có thể tìm ra cách sử dụng _list để xem các tài liệu mà anh ta không nên. Tương tự, quy tắc _rewrite có thể cung cấp cách xem tài liệu mà không có đường dẫn '/ db/doc_id' bình thường. Vì vậy, bạn phải * rất * chắc chắn rằng proxy của bạn không có lỗ hổng. – JasonSmith
Câu hỏi thứ hai của bạn là nhiều hơn về ** thu hồi ** quyền truy cập đọc hơn ** cấp quyền truy cập đọc **. Tôi đề nghị bạn hỏi một câu hỏi mới ("Cách thu hồi quyền truy cập đọc trong mô hình bảo mật CouchDB"). Tôi sẽ chụp một câu trả lời nếu tôi có thể! – JasonSmith