2013-01-19 27 views
5

Tôi đã làm việc trên một dự án Java một thời gian, và trước khi tôi làm cho nó có sẵn để tải xuống công khai, tôi muốn thêm vào một tính năng yêu cầu tôi kết nối với cơ sở dữ liệu MySQL. Câu hỏi của tôi là đơn giản: Làm thế nào tôi sẽ đi về ẩn mật khẩu để cơ sở dữ liệu nếu mã là mã nguồn mở?Ẩn chuỗi trong mã nguồn mở?

+0

Bạn muốn người dùng của mã của bạn để kết nối trực tiếp đến máy chủ cơ sở dữ liệu của bạn và không phải là một ví dụ MySQL họ thiết lập bản thân? Bạn có thể cung cấp bất kỳ chi tiết nào về loại tính năng này không? Một giải pháp thay thế có thể là để thúc đẩy một dịch vụ web an toàn mà người tiêu dùng có thể kết nối và được kiểm soát thông qua mà không làm cho máy chủ cơ sở dữ liệu của bạn công khai với bất kỳ ai? – Charlie

Trả lời

4

Lưu trữ cài đặt kết nối cơ sở dữ liệu riêng biệt với mã của bạn.

+0

Làm thế nào chính xác tôi sẽ lưu trữ nó trong một định dạng mà sẽ là không thể đọc được mặc dù? – caseif

+1

Tách cấu hình ứng dụng của bạn khỏi mã. Khi người dùng triển khai tệp, hãy cung cấp cho họ cấu hình. Bạn không cần phải kéo bất kỳ shenanigans obfuscans theo cách đó. –

+0

Như trong, có người dùng nhập tệp riêng? Nếu có thể, tôi muốn giữ toàn bộ nội dung trong một tập tin. – caseif

1

Bạn có thể đặt mật khẩu theo một số loại configuration file như tệp ini. Trong giai đoạn cài đặt/cài đặt, hãy lấy mật khẩu từ người dùng và điền mật khẩu vào tệp cấu hình theo mã hoặc cho phép họ thực hiện theo cách thủ công.

+1

Tôi không thực hiện theo ... Tôi cho rằng tôi nên đề cập rằng mã của tôi là một JAR độc lập. – caseif

1

Theo như tôi biết, không có câu trả lời đúng. Bạn có thể cố gắng thực sự khó khăn để che giấu hoặc ẩn nó, nhưng nếu mật khẩu hoặc một phương pháp tính toán nó là trong JAR của bạn, một người dùng lâu bền và có tay nghề cao sẽ tìm thấy nó.

Có một câu trả lời tốt hơn nhiều so với tôi có thể cung cấp cho đây: How can I protect MySQL username and password from decompiling?

+0

Tôi hơi bối rối. Nếu tôi sử dụng mã số 'preferences.put (" db_username ", tên người dùng); preferences.put ("db_password", mật khẩu); ', các thông tin đăng nhập sẽ không được mã hóa cứng vào nhị phân không? – caseif

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