2014-10-09 18 views
5

Chúng tôi đang lập kế hoạch một máy chủ Node.JS an toàn, sử dụng một số dịch vụ web của bên thứ ba. Mỗi yêu cầu thông tin xác thực cần được cấu hình bởi nhóm hoạt động.Thực tiễn tốt nhất để quản lý thông tin đăng nhập dịch vụ web cho Node.JS?

Rõ ràng họ có thể chỉ cần đặt chúng ở dạng văn bản thuần túy trong tệp cấu hình.

Microsoft .NET dường như cung cấp tùy chọn tốt hơn với DPAPI - xem Credential storage best practices. Có cách nào để thực hiện điều này thông qua IISNode không? Hoặc có tùy chọn nào khác để bảo mật thông tin xác thực đó trong cấu hình Node-JS không?

  • Charles

Trả lời

1

Có 2 cách để làm điều đó một cách an toàn:

Đầu tiên là sử dụng các tham số dòng lệnh khi bạn khởi động ứng dụng của bạn.

Những thông số này sau đó được tìm thấy trong process.argv

Vì vậy, node myapp.js username password sẽ cung cấp cho bạn:

process.argv[0]=node 
process.argv[1]=/.../myapp.js (absolute path) 
process.argv[2]=username 
process.argv[3]=password 

Thứ hai là để thiết lập các thông tin như biến ENV. Nó thường được coi là thực hành tốt nhất vì chỉ có bạn mới có quyền truy cập vào các biến này.

Bạn sẽ phải thiết lập các biến bằng cách sử dụng lệnh xuất khẩu, hơn bạn muốn truy cập vào nó trong process.env

+0

Cảm ơn đã phản ứng. Nhưng có lẽ tôi đã không làm cho bản thân mình rõ ràng. Đây sẽ là một máy chủ web - không có 'ứng dụng' mà tôi khởi chạy. Vì vậy, cả các biến ENV và các tham số dòng lệnh sẽ kết thúc trong một kịch bản ở đâu đó; sử dụng chúng không mang lại sự bảo mật bổ sung. Hay tôi đã bỏ lỡ điều gì đó? – CharlesW

+0

máy chủ nút của bạn sẽ vẫn phải được khởi chạy từ đâu đó, vì vậy bạn có thể đặt các biến env trên máy chạy máy chủ, không? – xShirase

3

Có một cuộc thảo luận rộng rãi của một số tùy chọn ở đây, trong đó có hai đề xuất bởi xShirase:

http://pmuellr.blogspot.co.uk/2014/09/keeping-secrets-secret.html

Dịch vụ do người dùng xác định giải quyết được sự cố, nhưng chỉ dành cho Cloud Foundry.

Blog này http://encosia.com/using-nconf-and-azure-to-avoid-leaking-secrets-on-github/ chỉ ra rằng bạn thường có thể đặt biến môi trường riêng biệt trên máy chủ và đề xuất sử dụng nconf để đọc chúng và định cấu hình tệp riêng biệt.

Tôi vẫn tự hỏi liệu có những đặc biệt cho IIS không?

  • Charles
0

Tôi hiện đã phải làm điều tương tự đối với chứng chỉ API bên ngoài của tôi. đây là những gì tôi đã làm

  • cài đặt mô-đun nút-config
  • tạo một thư mục và tập tin gọi là config/config.js
  • đây yêu cầu (config) mô-đun
  • Trong hộp địa phương nó đọc configuation từ tệp local.json
  • tôi có các giá trị giả ở địa phương.json cho khóa api và chia sẻ bí mật
  • trên môi trường QA của tôi xuất khẩu hai biến NODE_ENV = "QA" và NODE_CONFIG_DIR = "đường dẫn đến thư mục configuation tôi trên qa máy chủ"
  • mô-đun nút-config đọc configuation từ "đường dẫn đến của bạn thư mục config/QA.json"
  • bây giờ tôi có chìa khóa api động sản và chứng chỉ trong QA.json
  • đây bạn có thể sử dụng một mã hóa để mã hóa các giá trị và đưa nó trở lại trong QA.json
  • trong ứng dụng của bạn có được các giá trị cấu hình và giải mã này sử dụng nó trong phần còn lại của bạn gọi

hy vọng điều này sẽ hữu ích.

để cấu hình của bạn có thể hoạt động trong cùng một vùng chứa dưới dạng mã nút.

tham khảo này để mã hóa và giải mã http://lollyrock.com/articles/nodejs-encryption/

Các vấn đề liên quan