Как зашифровать файл конфигурации в приложении Perl Dancer?

У меня есть некоторая конфиденциальная информация (имя пользователя / пароль базы данных и ключ шифрования файлов cookie) в моем файле конфигурации для моего приложения Dancer, который я бы предпочел не отображать в виде простого текста на случай, если кто-то получит к нему доступ. Как лучше всего зашифровать файл, чтобы это не просто текст? Или есть более безопасный подход, который имеет больше смысла, чем шифрование (например, ограничение прав доступа к файлам)?


person Gabriel    schedule 15.09.2014    source источник
comment
Добро пожаловать в StackOverflow. Какие типы вопросов лучше всего будут отмечены и закрыты как основанные на мнении. Прочтите Как мне задать хороший вопрос? и Какие темы можно задать здесь?.   -  person Scott Solmer    schedule 16.09.2014
comment
Шифрование файла конфигурации бесполезно, потому что вашему приложению Dancer потребуется ключ шифрования для доступа к базе данных; если ваше приложение будет скомпрометировано, злоумышленник получит доступ к ключу, так что это почти не отличается от того, чтобы вообще не шифровать.   -  person ThisSuitIsBlackNot    schedule 16.09.2014
comment
Более сильная модель безопасности должна иметь три отдельных сервера: один для вашего веб-сервера, один для вашего приложения и один для вашей базы данных. Таким образом, если ваш веб-сервер скомпрометирован, злоумышленник не получит доступа к базе данных. Я не уверен, можно ли настроить Dancer для работы в такой архитектуре (и не имеет ли это вообще смысла для микро-инфраструктуры).   -  person ThisSuitIsBlackNot    schedule 16.09.2014
comment
То же самое при шифровании файла конфигурации. Если вы пытаетесь защитить информацию об имени пользователя и пароле в производственной среде, один из распространенных способов сделать это - установить их как переменные среды на уровне ОС. Благодаря этому ваши производственные учетные данные не попадут в репозиторий GIT.   -  person yahermann    schedule 17.09.2014


Ответы (1)


Поскольку вы не можете зашифровать конфигурацию, как в комментарий выше говорит @ThisSuitIsBlackNot, но иногда хорошо, чтобы скрыть пароли (например, скрыть пароли от некоторых сотрудников, которые не знают Perl, но имеют доступ к файлам конфигурации)

Я использую комбинацию

  • безопасность неизвестностью
  • и дурачить

В моих файлах конфигурации пароли в зашифрованном виде и выглядят как инструкции по настройке. Если кто-то захватит / прочитает только файл конфигурации - ничего полезного не получится.

Обычно я использую что-то вроде следующего:

db.password: enter some safe password here such De4w.Quafy3yq

и в коде я извлекаю часть «De4w.Quafy3yq» и использую rot13 или crypt и т.д ... получаю настоящий пароль: «Qr4j.Dhnsl3ld». Или использование хеша строки mh5 в качестве пароля, или аналогичные простые алгоритмы.

Это просто и эффективно против непрограммистов - конечно, бесполезно, когда кто-то знает Perl и тоже берет код.

РЕДАКТИРОВАТЬ

Потому что кажется (отрицательные голоса), что все еще есть люди, которые не понимают, что это означает, ЭТО НЕ НАСТОЯЩАЯ БЕЗОПАСНОСТЬ. Это приятный (забавный) метод (конечно, небезопасный - прочтите еще раз, это не означает никакой реальной безопасности), как скрыть пароль от коллег, которые не знают Perl. НЕ ИСПОЛЬЗУЙТЕ ЕГО для реальной защиты паролем. МОЙ БОГ...

person jm666    schedule 15.09.2014
comment
Если вы просто скрываете учетные данные от пользователей, у которых уже есть доступ к серверу, другим вариантом (если ваши системы баз данных это поддерживают) будет подключение с использованием учетных данных, хранящихся в файле (файлы параметров с MySQL, _ 1_ с Postgres и т. Д.), Для которых вы можете установить ограничительные разрешения. Таким образом, даже если другие пользователи имеют доступ к конфигурационному файлу Dancer, у них не будет доступа к учетным данным для подключения. - person ThisSuitIsBlackNot; 16.09.2014
comment
Я на самом деле не делюсь сервером с людьми, которые беспокоились бы о том, чтобы увидеть пароль (это мой собственный VPS), я больше думал о том редком случае, когда кто-то случайно взломал или получил доступ к сервер. - person Gabriel; 16.09.2014
comment
@Buuntu Security - штука хрупкая, и я не люблю рекомендовать, потому что у каждого сервера есть свои особенности. Может быть, одно - все (мои собственные) серверы работают на BSD в отдельных тюрьмах, сервер БД тоже один в одной тюрьме. К db-серверу разрешено подключаться только из тюрем, пароли - в виде открытого текста ... Но, как я уже сказал - каждое приложение, каждый сервер имеет свои потребности, и у меня не хватило смелости что-либо рекомендовать ...;) - person jm666; 17.09.2014