2010-11-12 24 views
11

có một mẫu chung trong Java để tránh các cuộc tấn công tiêm mongoDB không?tiêm mongoDB

Cảm ơn

+1

Bạn có thể làm rõ câu hỏi của mình bằng ngôn ngữ bạn định giao tiếp mongo không? Đã cập nhật câu hỏi –

+0

câu hỏi – Mark

Trả lời

16

Sử dụng một trong các trình điều khiển được hỗ trợ. Không deserialize chuỗi như JSON và vượt qua chúng như các truy vấn, ví dụ: không' làm điều này (trong Ruby):

collection.send(query_type, JSON.parse(parameters)) 

nơi query_typeparameters là chuỗi đến từ một biểu mẫu. Bạn sẽ phải là tội phạm ngu ngốc để làm điều này mặc dù.

Vì không có ngôn ngữ truy vấn nên không có cùng một phòng để tiêm. Một phần lý do mà các cuộc tấn công SQL injection có thể là hành động cần thực hiện (SELECT, UPDATE, DELETE, v.v.) là một phần của chuỗi truy vấn. MongoDB và nhiều cơ sở dữ liệu mới hơn, không hoạt động như vậy, thay vào đó hành động là một phần của API. Khi trình điều khiển SQL chỉ có query và trong một số trường hợp là exec, MongoDB có find, update, insertremove.

1

Hầu hết các trình điều khiển được thiết lập nơi bạn xây dựng truy vấn dưới dạng ngôn ngữ trình bày tài liệu BSON. Bạn định sử dụng ngôn ngữ mongo nào?

1

có, bằng cách sử dụng tìm kiếm regex. Ví dụ: giả sử bạn kiểm tra bằng tên người dùng và bạn không sử dụng EQ op. Nếu tôi vượt qua [a-z], ví dụ tôi sẽ bỏ qua hành động đăng nhập của bạn :).

Nhưng dù sao, nó phụ thuộc rất nhiều vào logic về cách thức mọi thứ được thực hiện trong giải pháp.