2012-02-08 11 views
11

Struktura gry [Używam wersji 1.2.3] nie obsługuje szyfrowania haseł db przechowywanych w pliku application.conf. Jest przechowywany jako plik tekstowy. DBPlugin odczytuje tę właściwość i tworzy pulę połączeń.Szyfrowanie hasła bazy danych w pliku application.conf

Wymagane jest zaszyfrowanie tego hasła - np. przy użyciu Jasypt. Niektóre przedsiębiorstwa wymuszają to jako środek bezpieczeństwa.

Czy ktoś próbował zrobić coś takiego?

Od momentu załadowania DBPlugin na ApplicationStart, nie można go zhakować. Pozostaje wtedy napisać niestandardową wtyczkę, a onConfigurationRead ustawić nową wartość dla db.password właściwości application.conf.

Wszelkie sugestie?

+1

Interesujące pytanie można również opublikować w grupie [Graj w Google] (http://groups.google.com/group/play-framework), aby uzyskać maksymalny zasięg. – tmbrggmn

Odpowiedz

11

Naprawiłem to, pisząc wtyczkę Play. Pisanie wtyczki Play jest również bardzo łatwe. Oto przykładowy kod:

package plugin; 

import java.util.Properties; 

import org.jasypt.util.text.StrongTextEncryptor; 

import play.Play; 
import play.PlayPlugin; 

public class DBPasswordInject extends PlayPlugin { 

    @Override 
    public void onConfigurationRead() { 
     StrongTextEncryptor strongTextEncryptor = new StrongTextEncryptor(); 
     strongTextEncryptor.setPassword("$Look##$2");// this password has been used to encrypt 

     String encryptedPassword = Play.configuration.getProperty("db.pass"); 
     String decrypted = strongTextEncryptor.decrypt(encryptedPassword); 
     Play.configuration.setProperty("db.pass", decrypted); //override 

     super.onConfigurationRead(); 
    } 

} 

Jedynym minusem jest to, że nie był w stanie wykorzystać org.jasypt.util.password.StrongPasswordEncryptor - ponieważ nie istnieje metoda odszyfrować.

+0

Jeśli używasz klasy org.jasypt.encryption.StringEncryptor, masz dostęp zarówno do szyfrowania, jak i odszyfrowywania –

1

Problem polega na tym, które hasło należy użyć do zaszyfrowania hasła? Jeśli używasz domyślnego hasła, to też nie jest bezpieczne. Jeśli umieścisz go w pliku konfiguracyjnym, masz problem z rekurencją. Jedynym rozwiązaniem, które widzę, jest użycie własnej wtyczki, w której przechowywane jest hasło, i zmiana wartości we właściwościach aplikacji. Następnie hasło można zapisać bez żadnych problemów. Przynajmniej w Play1.x.

+0

jasid pozwala na wyszukiwanie hasła szyfrowania w środowisku wykonawczym z właściwości systemu env lub java. To hasło nigdy nie musi być sprawdzane w systemach kontroli źródła lub mieć podświetlony problem kolisty. –

+0

Nigdy nie należy wpisywać hasła w wierszu poleceń. Jeśli użyjesz innego pliku właściwości, możesz użyć funkcji play bezpośrednio. – niels

Powiązane problemy