2012-09-05 38 views
12

API REST cho Mongolab thật tuyệt. Tôi có thể sử dụng nó để phân tích trong trang web của tôi trực tiếp bằng cách sử dụng javascript sau, được cung cấp trên trang hỗ trợ của Mongolab. Chỉ khi tôi có thể hiểu cách xác thực thực sự hoạt động. Khóa API được đề cập trong URL có thể dễ dàng được sao chép bởi bất kỳ ai xem nguồn html. Bảng điều khiển Mongolab không cung cấp bất kỳ đăng ký nào cho trang web của tôi, đảm bảo rằng khóa api sẽ chỉ được xác thực nếu đến từ miền của tôi. Xác thực này hoạt động như thế nào?Mongolab REST API xác thực như thế nào

$.ajax({ url: "https://api.mongolab.com/api/1/databases/my-db/collections/my-coll?apiKey=myAPIKey", 
      data: JSON.stringify({ "x" : 1 }), 
      type: "POST", 
      contentType: "application/json" }); 

Trả lời

11

Quan sát tuyệt vời và câu hỏi hay.

Hiện tại, tất cả các khóa API có quyền truy cập đọc và ghi vào cơ sở dữ liệu được liên kết với tài khoản của người dùng và bất kỳ tác nhân nào sở hữu khóa API đều có thể phát hành thành công bất kỳ yêu cầu nào như vậy.

Như bạn quan sát, khóa mật khẩu rất cơ bản này không được thiết kế với bất kỳ loại bảo mật chi tiết nào trong đầu.

Tuy nhiên, chúng tôi đang làm việc trên một loạt các tính năng bảo mật REST API mới nhằm mục đích chính xác điều đó.

Liên hệ với chúng tôi theo địa chỉ [email protected] nếu bạn muốn thảo luận chi tiết.

+0

Bạn dường như được làm việc về vấn đề này trong một thời gian dài, trong khi tôi hiểu rằng có những cách khác các nhà phát triển có thể làm điều này bản thân, quy mô thời gian dự kiến ​​sẽ có ích. – Neil

+0

Tôi rất muốn nghe thêm một chút về điều này về quy hoạch. Có liên kết tới "loạt các tính năng bảo mật API REST mới" để tôi có thể đọc cách chúng hoạt động và có thể cân nhắc với 2cts của tôi không? – iwein

+0

Có bản cập nhật nào về điều này không? – SlowAndSteady

-1

Bạn có khóa API để thực hiện yêu cầu http cho DB của bạn bằng API REST của họ. Ví dụ, nếu người dùng muốn đăng nhập vào tôi thực hiện một yêu cầu với một phương thức GET như thế này:

https://api.mongolab.com/api/1/databases/name_db/collections/users/put_your_params_like_username_and_pw?apiKey=xxxxxxxxx

Và sau đó bạn phân tích đáp ứng yêu cầu đó. Nó không phải là DB an toàn nhất trên thế giới nhưng nó đang trở nên tốt hơn.

Nếu bạn muốn biết thêm tôi nói về điều đó trong blog của tôi: http://lolapriego.com/blog/?p=16

1

Tôi muốn sử dụng dịch vụ MongoLab cho ứng dụng AngularJs đầu tiên của tôi với MongoDB, nhưng MongoLab chưa sẵn sàng phục vụ sản xuất với một ứng dụng web mà muốn truy cập từ giao diện người dùng đến MongoDB. Rất dễ dàng để có được khóa API trong lưu lượng mạng của trình duyệt (xem ảnh chụp màn hình bên dưới, apiKey ở dạng văn bản thuần túy ở đó) và sau đó bất kỳ ai có thể truy cập đầy đủ vào DB. Vì vậy, rối tung xung quanh với MongoDB sẽ không có vấn đề gì.

Tôi chưa tìm được giải pháp cho MongoLab. Tại thời điểm này, tôi nghĩ rằng tôi sẽ sử dụng một dịch vụ khác như https://www.dreamfactory.com/

Tôi chưa thử chi tiết nhưng có vẻ tuyệt vời cho AngularApp với MongoDB và tôi cần kiểm tra cách chúng triển khai bảo mật của api. Trên giao diện đầu tiên, có vẻ như nó đang làm việc với mã thông báo phiên để bảo đảm các yêu cầu tới cơ sở dữ liệu.

Screenshot network traffic MongoLab credentials