2012-06-10 29 views
10

Để nói một cơ sở dữ liệu MySQL có các vấn đề bảo mật đã biết. Làm thế nào điều này áp dụng cho một NoSQL db? ví dụ. Tiêm, xss vv Đo lường an ninh bạn phải thực hiện khi sử dụng một NoSQL db là gì? Cụ thể liên quan đến MongoDB (với node-mongodb-native) và Node.js (sử dụng Express)Bảo mật Mongodb trong node.js

Và nếu có, có bất kỳ mô-đun nào cho Nút/Express giúp ngăn ngừa điều này không?

+0

Tôi tin rằng nguyên tắc "không tin tưởng bất kỳ ai và đặc biệt là đầu vào người dùng" vẫn được áp dụng cho cơ sở dữ liệu noSql. Nhưng đây là một câu hỏi phù hợp và tốt, muốn thấy một số câu trả lời cho nó. Cảm ơn @Jojje –

Trả lời

11

Có vấn đề cụ thể cho NodeJS, MongoDB (và một số người khác NoSQL cơ sở dữ liệu mà rất nhiều sử dụng javascript): serverside javascript tiêm. Hãy xem herehere (pdf) để biết chi tiết. Nó giống SQL injection hơn XSS.

Một thời gian ngắn, đó là khi kẻ tấn công gửi javascript đến các nút của bạn hoặc mongodb khi bạn đang mong đợi chỉ JSON. Vì vậy, lý thuyết xấu guy có thể mang lại cho dịch vụ của bạn xuống (DOS), truy cập dữ liệu của bạn và thậm chí cả hệ thống tập tin.

Để ngăn chặn các cuộc tấn công như vậy bạn phải:

  1. Tránh tạo “ad-hoc” JavaScript lệnh bằng cách kết hợp kịch bản với người dùng nhập vào.
  2. Xác thực thông tin nhập của người dùng được sử dụng trong các lệnh SSJS với cụm từ thông dụng.
  3. Tránh sử dụng lệnh eval JavaScript. Cụ thể, khi phân tích cú pháp đầu vào JSON, hãy sử dụng giải pháp thay thế an toàn hơn như JSON.parse.