2009-10-28 2 views
8

Tôi đã luôn luôn muốn làm cho một số sản phẩm của công ty chúng tôi nguồn mở ... nhưng chúng tôi có rất nhiều thứ trong mã nguồn của chúng tôi sẽ khiến chúng tôi trở nên tồi tệ. Điều này được xử lý như thế nào trong hầu hết các dự án nguồn mở? Ví dụ, chúng tôi sử dụng một số dịch vụ web tùy chỉnh để thực hiện các hành động cho cơ sở dữ liệu của chúng tôi (Thêm tài khoản, xóa tài khoản, vv). Mã nguồn sẽ phải chứa khóa (mật khẩu) mà chúng tôi sử dụng để sử dụng dịch vụ web. Nếu ai đó muốn, họ có thể lấy nguồn, lấy chìa khóa để sử dụng dịch vụ web của chúng tôi, và phá hoại tàn phá trên cơ sở dữ liệu của chúng tôi.Nguồn mở và cách thức hoạt động của nó cho các dự án an toàn?

Đây có phải là những dự án không phải là nguồn mở không? Hoặc là nó phổ biến để chỉ cần đưa những thứ nhạy cảm trong một tập tin hoặc một cái gì đó và không bao gồm một phần? (Mặc dù làm điều này, sẽ làm cho nguồn kinda vô dụng cho công chúng vì nó sẽ mất chức năng của nó).

Bất kỳ liên kết hoặc tài nguyên nào về các dự án mã nguồn mở và cách xử lý nội dung này sẽ tốt đẹp như thế nào.

Cảm ơn

+1

Tại sao bạn muốn mở nguồn sản phẩm? Nếu bạn đang làm điều đó bởi vì bạn nghĩ rằng bạn sẽ nhận được rất nhiều sự phát triển miễn phí, đó không phải là cách nó hoạt động. Mọi người sẽ chỉ làm việc trên các dự án mà họ sử dụng và họ sẽ chỉ sử dụng các dự án cung cấp cho họ một số giá trị. – kdgregory

+0

Xem thêm: [Các dự án nguồn mở xử lý các tạo phẩm an toàn như thế nào?] (Http://security.stackexchange.com/q/12295/12139) – unor

Trả lời

8

Mật khẩu và dữ liệu kết hợp tốt nhất không được bao gồm trong tệp nguồn. Nếu bạn nhìn vào thiết kế của phần mềm nguồn mở như PHPMyAdmin, một tệp cấu hình được cung cấp để thêm vào những thông tin đó và thường được lưu trữ trong thư mục gốc của webhost (hoặc bất kỳ nơi nào bên ngoài thư mục www). Vì vậy, ý tưởng là nếu trang web của bạn sử dụng một số thông tin để liên kết với một dịch vụ, bạn cũng nên ẩn chúng trong một tệp và yêu cầu người dùng cung cấp mật khẩu và tạo tài khoản của riêng họ.

3

Bạn không thể đưa dữ liệu hợp lý của mình vào tệp cấu hình? Điều này cũng sẽ cho phép người dùng khác dễ dàng thêm thông tin nhạy cảm của họ, v.v.

+0

tệp cấu hình có thể không áp dụng trong mọi trường hợp. thông thường chúng ta sẽ sử dụng các tệp cơ sở dữ liệu/xml để lưu trữ các thiết lập. – Raptor

2

Bạn không nên đưa dữ liệu nhạy cảm vào công chúng, vì vậy một tùy chọn có thể là tạo API công khai cho dịch vụ và sau đó người dùng sẽ cần để tạo tài khoản để nhận khóa API cho dữ liệu.

Tôi không nghĩ rằng điều này sẽ ngăn bạn từ mã nguồn mở các sản phẩm, nhưng tôi nghĩ rằng bạn cần phải suy nghĩ lại cách dữ liệu được handelend máng một API công cộng.

1

Mặc dù mã chương trình là mã nguồn mở, nhưng dữ liệu nhạy cảm của bạn thì không. Không bao giờ "cung cấp" dữ liệu của bạn cho người khác.

Thông thường, xác minh băm một chiều có thể đã được sử dụng làm mã hóa cơ bản. Nếu cần thêm bảo mật, hãy sử dụng biện pháp bổ sung, như công khai & khóa riêng & mật khẩu được chia sẻ trước.

2

Nếu bạn mã hóa mật khẩu cơ sở dữ liệu trong mã của mình, bạn đang làm sai. Như những người khác đã chỉ ra, bạn nên lưu trữ nó trong một tập tin cấu hình riêng biệt và được bảo vệ.

Nếu bạn phân phối mã của mình, có thể là nguồn hoặc chỉ là mã nhị phân, mật khẩu đó ở ngoài đó và có thể được khôi phục bởi bất kỳ ai quan tâm. Mật khẩu được mã hóa cứng trong tệp nhị phân thường là một vấn đề tầm thường để hacker khôi phục.