Шифрование пароля БД в application.conf - PullRequest
11 голосов
/ 08 февраля 2012

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

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

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

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

Есть предложения?

Ответы [ 2 ]

11 голосов
/ 09 февраля 2012

Наконец-то я исправил это, написав плагин Play.Написание плагина 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 - потому что нет способа расшифровки.

1 голос
/ 09 февраля 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...