Подтвердить что ты не робот

Шифрование пароля db в application.conf

Play framework [Я использую v1.2.3] не поддерживает шифрование паролей db, хранящееся в application.conf. Это сохраняется как текстовый файл. DBPlugin считывает это свойство и создает пул соединений.

Требование состоит в том, чтобы зашифровать этот пароль - например, используя Jasypt. Некоторые предприятия применяют это в качестве меры безопасности.

Кто-нибудь пытался сделать что-то подобное?

Так как DBPlugin загружается на ApplicationStart, его невозможно взломать. Это оставляет писать пользовательский плагин, а onConfigurationRead устанавливает новое значение для db.password свойства application.conf.

Любые предложения?

4b9b3361

Ответ 1

Наконец, я исправил это, написав Play Plugin. Написание плагина Play также очень просто. Вот пример кода:

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();
    }

}

Единственным недостатком является то, что я не смог использовать org.jasypt.util.password.StrongPasswordEncryptor, потому что не существует метода дешифрования.

Ответ 2

Ну, проблема в том, какой пароль следует использовать для шифрования пароля? Если вы используете пароль по умолчанию, это также небезопасно. Если вы поместите его в файл конфигурации, у вас возникнет рекурсивная проблема. Единственное решение, которое я вижу, - это использовать собственный плагин, где хранится пароль, и изменять значения в свойствах приложения. Тогда пароль может быть сохранен без проблем. По крайней мере, в Play1.x.