2012-04-17 38 views
14

Tôi đang phát triển một ứng dụng máy chủ tùy chỉnh sẽ truy cập cơ sở dữ liệu. Tôi cần phải quyết định nơi tôi sẽ lưu trữ các thông tin đăng nhập (và địa chỉ) cho máy chủ đó.Thực tiễn tốt nhất để lưu trữ mật khẩu cơ sở dữ liệu

Một giải pháp phổ biến là đặt chứng chỉ vào tệp cấu hình. Tuy nhiên, tôi không muốn một máy chủ bị xâm phạm có nghĩa là hacker có quyền truy cập vào DB (được lưu trữ trên một máy chủ riêng).

Tôi có thể lưu trữ thông tin xác thực trong môi trường, nhưng đó chỉ là bảo mật thông qua sự tối tăm. Ông Evil chỉ có thể nhìn vào môi trường để tìm nó.

Mã hóa người được đề xuất. Tuy nhiên, nếu tôi lưu trữ khóa trong tệp thực thi, việc giải nén nhanh (chúng tôi đang sử dụng Java) và tôi vẫn phải chịu số phận.

Tôi cũng muốn tránh phải nhập một lời diễn giải mỗi lần tôi khởi động máy chủ.

Mọi đề xuất? Tôi cảm thấy như tôi đang thiếu một cái gì đó đơn giản.

Cảm ơn

+2

Vì vậy, bạn muốn ứng dụng của mình có quyền truy cập vào thông tin đăng nhập nhưng một hacker đã truy cập root vào máy đó bị từ chối truy cập? – liquorvicar

+1

Nếu bạn không nhập cụm từ mật khẩu ** mỗi khi bạn khởi động máy chủ thì Mr. Evil sẽ không làm như vậy, có nghĩa là bất kỳ ai có quyền truy cập vào vị trí thực tế của máy chủ đều có thể truy cập. – byrondrossos

Trả lời

5

Tôi không nghĩ bạn đang thiếu thứ gì đó đơn giản. Máy chủ được đề cập có thể kết nối với cơ sở dữ liệu mà không có sự trợ giúp của bạn, trong trường hợp đó, để có thông tin đăng nhập; hoặc nó không thể kết nối mà không cung cấp cho bạn. Bạn có thể thực hiện các bước khác nhau như những bước bạn đã liệt kê để làm cho nó khó khăn hơn cho máy chủ bị xâm phạm để tiết lộ thông tin đăng nhập vào cơ sở dữ liệu, nhưng vào cuối ngày, nếu nó phải có các thông tin xác thực đó và cung cấp cho Máy chủ DB để kết nối, chúng sẽ phải được lưu trữ trên nó ở đâu đó   — hoặc ít nhất, nó sẽ phải có một số phương tiện để nhận chúng, và do đó sẽ bị hack theo nghĩa đó. Đặt cược tốt nhất của bạn là tập trung vào việc tìm hiểu về sự xâm nhập (máy chủ bị xâm nhập) càng nhanh càng tốt, giữ các bản sao lưu ngoại tuyến, off-line tốt cho trường hợp xấu nhất, gây ra nhiều rào cản xâm nhập ngay từ đầu. , v.v.

3

Tôi đang chia sẻ, cách tôi đã giải quyết vấn đề này.

  • Xây dựng API, để truy vấn chi tiết xác thực từ miền nước ngoài.
  • Sử dụng khóa công cộng và khóa cá nhân để đọc qua chi tiết.

Nhưng, thực sự điều duy nhất này đã làm là qua phức tạp những điều đơn giản. Sau đó, tôi đã tạo nhiều người dùng vào cơ sở dữ liệu, với các đặc quyền khác nhau.

Giống như

  • guest chỉ có thể để SELECT
  • mod chỉ có thể CREATE, INSERT, UPDATE, DELETE

vv và chuyển người sử dụng, bất cứ khi nào người dùng xác thực xuất hiện.

Với sự kết hợp giữa người dùng và phiên, tôi đã có thể thoát khỏi các mối đe dọa từ trước đến nay.Nhưng ofcourse lỗ hổng mã phải được kiểm tra kỹ lưỡng.

2

Khóa xuống. Ngăn chặn ông Ác khỏi lấy gốc. Tôi biết, phải không?

Viết ứng dụng bảo mật và giữ máy chủ ứng dụng của bạn bị khóa. Thực hiện theo các phương pháp hay nhất ở đó và đó là hầu hết công việc.

Khi tôi đã thiết lập cơ sở dữ liệu trong môi trường bảo mật, máy chủ duy nhất trên cùng một mạng vật lý với máy chủ cơ sở dữ liệu là máy chủ ứng dụng. Có hai cách để truy cập vào máy chủ cơ sở dữ liệu:

  1. máy chủ ứng dụng
  2. điều khiển

Do đó, để thỏa hiệp máy chủ cơ sở dữ liệu, họ sẽ phải thỏa hiệp máy chủ ứng dụng.

Vì vậy, hãy khóa máy chủ ứng dụng. Tất nhiên điều tồi tệ nhất là bị xâm phạm đang bị tổn hại và không biết về nó. Nếu bạn phát hiện ra một sự thỏa hiệp, bạn cần phải sửa lỗ hổng nếu có. Forensics là quan trọng ở đây (cho phép các bản ghi và theo dõi chúng). Bạn cũng cần một kế hoạch phục hồi tại chỗ.

Phòng ngừa, phát hiện, chỉnh sửa và khôi phục là tối quan trọng.

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