2011-02-03 64 views
8

Cách để lấy cơ sở dữ liệu và mật khẩu dịch vụ khác ra khỏi mã của bạn là gì? Tôi đã đọc về cách sử dụng cho mỗi tập tin thuộc tính máy chủ nhưng khi bạn có một số lượng lớn các máy chủ nó được khó khăn để duy trì. Tôi cũng đã nhìn thấy một giải pháp sử dụng quá trình xây dựng của CI để "tiêm" mật khẩu nhưng điều đó khiến việc cập nhật mật khẩu trở nên khó khăn.Bạn lưu mật khẩu cơ sở dữ liệu ở đâu?

Một số yêu cầu để giúp thu hẹp lĩnh vực câu trả lời ...

  1. Mật khẩu nên dễ thay đổi và tuyên truyền trong trường hợp vi phạm an ninh.
  2. Mật khẩu không thể xuất hiện trong mã (do điểm 1)
  3. Nó phải là "không tầm thường" cho một con người để có được một phiên bản đồng bằng văn bản của mật khẩu
  4. nên làm việc tốt trong các ứng dụng web và đứng một mình ứng dụng
  5. dễ dàng áp dụng từ một nhà phát triển ứng dụng quan điểm

một số đẹp-to-có bao gồm không giới thiệu một điểm duy nhất của thất bại, một thời gian phát triển nhanh chóng, và dễ hiểu.

Điều này tương tự về tinh thần với this question nhưng với sự nhấn mạnh mạnh về khả năng bảo trì và tập trung hơn vào trường hợp phía máy chủ.

+0

Làm thế nào để lưu trữ nó trong cơ sở dữ liệu? :) –

+0

@Joe: đó thực sự là một giải pháp có mục đích nhưng ý tưởng về mật khẩu-to-rule-họ-tất cả đã kết thúc cuộc nói chuyện đó. –

+0

Ít nhất bạn chỉ cần nhớ một mật khẩu. Bạn có thể ghi vào đĩa CD và lưu trữ trong két an toàn. Bạn sẽ chỉ cần nhớ sự kết hợp an toàn sau đó. :) – GolezTrol

Trả lời

6

Bạn có thể lưu trữ văn bản thuần túy trong một tệp trong thư mục được bảo vệ mà chỉ có thể đọc được bằng tài khoản mà ứng dụng đang chạy. Trong trường hợp của một ứng dụng web, bạn nên luôn luôn lưu trữ mật khẩu bên ngoài thư mục gốc của web.

+0

Vâng, tôi đang cố gắng để upvote câu trả lời của bạn nhưng hệ thống nói với tôi tôi đã bỏ phiếu (lỗi?). Cảm ơn sự đóng góp của bạn. –

+0

Có thể bạn cũng vô tình bị downvoted?Nó sẽ hoạt động ngay bây giờ. – GolezTrol

1

Nếu bạn sử dụng hồ bơi kết nối cơ sở dữ liệu thì tên người dùng, mật khẩu và các chi tiết cơ sở dữ liệu khác thường được quản lý trong Vùng chứa Web Java và được trình bày với mã Java dưới dạng Nguồn dữ liệu. Bạn chỉ cần yêu cầu kết nối cơ sở dữ liệu mà không cần biết bất kỳ chi tiết nào trong số này.

+0

Chúng tôi sử dụng các hồ chứa kết nối vùng chứa, đó là lý do tại sao tôi đưa vào "và các mật khẩu dịch vụ khác" vì chúng tôi cũng có các mật khẩu đó. Trong trường hợp độc lập java, chúng tôi không có một thùng chứa tốt để xử lý các nhóm dữ liệu cho chúng tôi. –

+0

Tôi không nghĩ rằng Hồ bơi kết nối bị giới hạn đối với máy chủ web/ứng dụng - tôi tin rằng chúng hoạt động tốt trong mã độc lập. – trojanfoe

+0

Đúng, nhưng bên ngoài máy chủ ứng dụng cấu hình thường nằm bên trong ứng dụng (vui lòng chứng minh tôi sai). Ngoài ra vẫn còn vấn đề nổi bật của "dịch vụ khác" (nghĩ FTP) –

0

Ngoài việc lưu trữ nó trong một tệp văn bản bên ngoài gốc web, làm thế nào về việc sử dụng mã hóa? Với hầu hết các ngôn ngữ, nó khá tầm thường để sử dụng một phương thức mã hóa và mặc dù nó có thể không cần thiết để bảo vệ khỏi các cuộc tấn công trên web, điều này khiến người khác có thể truy cập vào tệp trên hệ thống của bạn trở nên khó khăn hơn. Ngoài ra, một chút obfuscation, ngụy trang các tập tin như một cái gì đó khác với một tên nhàm chán mà có thể sẽ bị bỏ qua, làm cho nó ít có khả năng ai đó sẽ tìm thấy nó ngay cả trong trường hợp họ có thể truy cập vật lý đến máy chủ.

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