Meteor có những cơ chế bảo mật nào? [đóng cửa]


92

Chúng ta đều biết rằng Meteor cung cấp trình điều khiển miniMongo cho phép khách hàng truy cập vào lớp liên tục (MongoDB) một cách liền mạch.

Nếu bất kỳ khách hàng nào có thể truy cập API liên tục thì làm cách nào để bảo mật ứng dụng của mình?

Các cơ chế bảo mật mà Meteor cung cấp là gì và chúng nên được sử dụng trong ngữ cảnh nào?


6
Tôi thích rằng vấn đề này đã được giải quyết, nhưng họ thực sự nên đề cập đến vấn đề này trong video. Tôi nghĩ rằng khá nhiều nhà phát triển web xem nó sẽ có câu hỏi này trong tâm trí của họ sau 10 giây cho đến khi kết thúc câu hỏi và chỉ cảm thấy bực mình rằng đối với một sản phẩm tuyệt vời như vậy, họ XUẤT HIỆN hoàn toàn bỏ qua vấn đề bảo mật rõ ràng.
Naatan

6
Meteor 0.5.0 thêm xác thực người dùng meteor.com/blog/2012/10/17/...
hipertracker

Bạn có thể đặt lại từ khóa này một chút để mở lại. Có lẽ "Tôi nên thực hiện các biện pháp an ninh nào?" hoặc "Có những tùy chọn bảo mật nào?"
joeytwiddle

1
Ý kiến ​​dựa trên? Wat? Tôi nói rằng đây là một cuộc kiểm toán mở lại vì nó rõ ràng là không dựa trên ý kiến.
bjb568

Tôi đồng ý rằng, phán quyết dựa trên ý kiến ​​nằm ngoài ngữ cảnh - câu trả lời dựa trên sự kiện có thật.
Olivier Refalo

Câu trả lời:


64

Khi bạn tạo ứng dụng bằng lệnh sao băng, theo mặc định, ứng dụng này bao gồm các gói sau:

  • TỰ ĐỘNG
  • KIỂM TRA

Cùng với nhau, chúng bắt chước hiệu ứng của việc mỗi máy khách có toàn quyền truy cập đọc / ghi vào cơ sở dữ liệu của máy chủ. Đây là những công cụ tạo mẫu hữu ích (chỉ dành cho mục đích phát triển), nhưng thường không thích hợp cho các ứng dụng sản xuất. Khi bạn đã sẵn sàng cho bản phát hành chính thức, chỉ cần xóa các gói này.

Để bổ sung thêm, Meteor hỗ trợ các gói Facebook / Twitter / và Many More để xử lý xác thực và thú vị nhất là gói Accounts-UI


2
Đúng như các thiên thạch 0,5
Olivier Refalo

5
Không an toàn theo mặc định. Rất tiếc.
Judah Gabriel Himango

16
@JudahHimango chỉ dành cho mục đích thử nghiệm và việc xóa hai gói đó khi bạn đã sẵn sàng để sản xuất cũng dễ dàng như vậy meteor remove autopublish insecure.
BenjaminRH

1
Còn các phương pháp sao băng? Máy khách có thể truy cập những thứ đó từ bảng điều khiển ngay cả khi được gỡ cài đặt không an toàn, vì chúng được chạy trên máy chủ. Làm cách nào để bảo mật chúng?
Matanya

2
@Matanya nhưng khi sử dụng và thực thi những thứ đó từ bảng điều khiển, nó sẽ access deniedgặp lỗi. Kiểm tra nó ra.
ajduke

35

Trong bộ sưu tập, tài liệu nói:

Hiện tại, khách hàng được cấp toàn quyền ghi vào bộ sưu tập. Họ có thể thực hiện các lệnh cập nhật Mongo tùy ý. Sau khi chúng tôi xây dựng xác thực, bạn sẽ có thể giới hạn quyền truy cập trực tiếp của khách hàng để chèn, cập nhật và xóa. Chúng tôi cũng đang xem xét trình xác thực và chức năng giống ORM khác.


1
Cũng se chủ đề này trên Quora với một câu trả lời từ một trong những nhà phát triển Meteor: quora.com/Meteor-web-framework/Whats-cool-about-Meteor/answer/...
dentarg

1
@jonathanKingston liên kết bị hỏng, bạn có thể cập nhật lại được không?
Carlos Barcelona

@CarlosBarcelona Miền đã hết hạn và bài viết trước khi có các bản cập nhật bảo mật trong Meteor. Tôi nghĩ công bằng mà nói nó đã lỗi thời; vì vậy tôi đã xóa bình luận để tiết kiệm thời gian cho mọi người. Cảm ơn
jonathanKingston

5

Nếu bạn đang nói về việc hạn chế khách hàng không sử dụng bất kỳ API chèn / cập nhật / xóa trái phép nào của bạn, điều đó có thể.

Xem ứng dụng todo của họ tại https://github.com/meteor/meteor/tree/171816005fa2e263ba54d08d596e5b94dea47b0d/examples/todos

Ngoài ra, họ hiện đã thêm một mô-đun AUTH được tích hợp sẵn, cho phép bạn đăng nhập và đăng ký. Vì vậy, nó an toàn. Theo như bạn đang chăm sóc XSS, Valiations, tiêu đề khách hàng, v.v.

nhưng bạn có thể chuyển đổi ứng dụng sao băng thành ứng dụng nodejs hoạt động hoàn toàn bằng cách triển khai tới node. Vì vậy, nếu bạn biết cách bảo mật một ứng dụng nodejs, bạn sẽ có thể bảo mật sao băng.


1
Điều này hoàn toàn đúng như của tháng 9 năm 2012
Olivier Refalo

2

Kể từ ngày 0.6.4, trong chế độ phát triển, các khối is_client và is_server vẫn đi đến hệ thống máy khách. Tôi không thể nói nếu chúng được tách biệt khi bạn tắt chế độ phát triển.

Tuy nhiên, nếu không, một hacker có thể có được thông tin chi tiết từ hệ thống bằng cách xem xét các khối mã if (Meteor.is_server). Điều đó đặc biệt quan tâm đến tôi, đặc biệt là vì tôi lưu ý rằng tại thời điểm này tôi vẫn không thể tách Bộ sưu tập thành các tệp riêng biệt trên máy khách và máy chủ.

Cập nhật

Chà, vấn đề là không đặt mã liên quan đến bảo mật trong khối is_server trong một thư mục không phải máy chủ (tức là - đảm bảo rằng nó nằm trong một cái gì đó dưới / server.

Tôi muốn xem liệu tôi có phát điên khi không thể tách biệt các Bộ sưu tập máy khách và máy chủ trong các thư mục máy khách và máy chủ hay không. Trong thực tế, không có vấn đề với điều này.

Đây là bài kiểm tra của tôi. Đó là một ví dụ đơn giản về mô hình xuất bản / đăng ký có vẻ hoạt động tốt. http://goo.gl/E1c56


1
Giải pháp sẽ là lưu mã của bạn trong máy chủ / thư mục - theo cách này, nó không bị đẩy đến máy khách.
Olivier Refalo

DRM, vui lòng xem docs.meteor.com/#structuringyourapp - mã nhạy cảm không cần phải được cung cấp cho khách hàng
emgee

Hãy thử một cái gì đó đơn giản; tạo một bộ sưu tập trong tệp máy chủ, sau đó tạo bộ sưu tập tương tự trong tệp khách hàng và cho tôi biết điều gì sẽ xảy ra. Tiếp theo, tạo tệp gốc với khai báo của bộ sưu tập, sau đó chỉ cần tham chiếu tệp đó trong tệp thư mục máy chủ và máy khách và cho tôi biết điều gì sẽ xảy ra. Nếu bạn không thể tạo bộ sưu tập, giống như tôi không thể, làm thế nào bạn có thể tham khảo chúng một cách độc lập? Cuối cùng, bạn cần tham chiếu đến bộ sưu tập tồn tại trong cùng một tệp khách hàng có sẵn và sử dụng is_server và is_client. Tôi hy vọng tôi đã sai, nhưng tôi vẫn chưa tìm ra cách làm hoặc tại sao.
DrM

Hmm, lạ, kiểm tra có vẻ ổn, sẽ cập nhật câu trả lời
DrM

Liên kết là một repo đến mã đơn giản, nhưng dường như hoạt động tốt, không chắc chắn những lỗi kỳ lạ trong quá khứ là gì hoặc cách tôi có thể tạo lại chúng.
DrM
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.