2009-10-28 11 views
8

Zawsze chciałem, aby niektóre z naszych firm produktów open-source .., ale mamy wiele rzeczy w naszym kodzie źródłowym, które uczyniłoby nas do wulkwisty. W jaki sposób jest to obsługiwane w większości projektów open source? Na przykład używamy niestandardowych usług internetowych do wykonywania działań w naszej bazie danych (dodawanie kont, usuwanie kont, itp.). Kod źródłowy musiałby zawierać klucz (hasło), którego używamy do korzystania z usługi internetowej. Gdyby ktoś chciał, mogliby pobrać źródło, zdobyć klucz do korzystania z naszej usługi internetowej i zniszczyć naszą bazę danych.Open Source i jak to działa w przypadku bezpiecznych projektów?

Czy to tylko projekty, które nie powinny być otwarte? Czy często jest po prostu umieszczać wrażliwe rzeczy w pliku lub coś takiego i nie uwzględniać tej części? (Mimo że to spowodowałoby, że źródło byłoby nieprzydatne dla publiczności, ponieważ utraciłoby to jego funkcjonalność).

Wszelkie linki i zasoby dotyczące projektów open-source oraz tego, jak należy obchodzić się z takimi plikami, byłyby miłe.

Dzięki

+1

Dlaczego chcesz otworzyć produkt? Jeśli robisz to, ponieważ uważasz, że dostaniesz dużo wolnego rozwoju, to nie działa tak. Ludzie będą pracować tylko nad projektami, z których korzystają, i będą używać tylko projektów, które zapewniają im jakąś wartość. – kdgregory

+0

Zobacz też: [W jaki sposób projekty open source obsługują bezpieczne artefakty?] (Http://security.stackexchange.com/q/12295/12139) – unor

Odpowiedz

8

Hasła i dane zmysłów nie są najlepiej zawarte w pliku źródłowym. Jeśli spojrzysz na projekt oprogramowania open-source, takiego jak PHPMyAdmin, dostarczony jest plik konfiguracyjny, który dodaje te informacje i zwykle jest przechowywany w folderze głównym hosta (lub gdziekolwiek poza folderem www).

Chodzi o to, że jeśli witryna używa niektórych informacji do połączenia z usługą, należy ukryć je również w pliku i poprosić użytkownika o podanie hasła i utworzenie własnego konta.

3

Czy nie byłoby to możliwe, aby umieścić swoje sensowne dane do pliku konfiguracyjnego? Dzięki temu inni użytkownicy będą mogli łatwo dodawać własne poufne informacje itp.

+0

plik konfiguracyjny może nie mieć zastosowania w każdym przypadku. zwykle będziemy używać plików bazy danych/xml do przechowywania ustawień. – Raptor

2

Nie należy podawać danych poufnych do wiadomości publicznej, więc jedną z opcji może być utworzenie publicznego interfejsu API dla usług, a następnie użytkownicy będą potrzebować utworzyć konto, aby uzyskać klucz API dla danych.

Nie sądzę, że powinno to powstrzymać cię przed produktami Open Source, ale myślę, że musisz przemyśleć sposób, w jaki dane są przetwarzane przez publiczny interfejs API.

1

Chociaż kody programów są open-source, wrażliwe dane nie są. Nigdy nie "dostarczaj" swoich danych innym.

Zazwyczaj jednokierunkowa weryfikacja hash może być już używana jako podstawowe szyfrowanie. Jeśli wymagane są dodatkowe zabezpieczenia, należy zastosować dodatkowy środek, taki jak publiczne & klucze prywatne & wstępnie udostępnionych haseł.

2

Jeśli w kodzie kodu wpisujesz hasło bazy danych, robisz to źle. Jak zauważyli inni, należy przechowywać to w oddzielnym i chronionym pliku konfiguracyjnym.

Jeśli rozpowszechniasz swój kod, czy to źródło, czy tylko plik binarny, to hasło jest tam i może zostać odzyskane przez każdego, kto ma na to ochotę. Zakodowane na sztywno hasła w plikach binarnych często są sprawą łatwą do odzyskania przez hakerów.