Каков (самый?) Безопасный способ обработки соединений с базой данных в веб-приложении? - PullRequest
3 голосов
/ 07 января 2010

У меня есть веб-приложение, написанное на Perl с использованием PostgreSQL.

При доступе к базе данных PostgreSQL мне нужно указать имя пользователя и пароль. Чтобы пароль был доступен для автоматического запуска системы, мне нужно, чтобы этот пароль был встроен в мое приложение, файл конфигурации или переменную среды, настроенную в Apache.

В любом случае мне нужно где-то пароль в текстовом формате.

Как это делается на реальных веб-сайтах?

Ответы [ 5 ]

6 голосов
/ 07 января 2010

Самый безопасный способ сделать это - иметь файл конфигурации и поместить его вне общих папок.

4 голосов
/ 07 января 2010
  • Убедитесь, что пароль находится где-то, что веб-сервер никогда не будет обслуживать.Если возможно, поместите его вне webroot;если это невозможно,
  • Убедитесь, что файл, содержащий пароль, доступен для чтения только пользователю, от имени которого работает веб-сервер, и не доступен для записи никем
  • Регулярно поворачивайте его, чтобы минимизировать влияние, еслион каким-то образом протекает
  • Убедитесь, что у пользователя базы данных, который вы используете, есть минимальные разрешения.Например, для установки Wordpress создайте учетную запись только для использования Wordpress и предоставьте ей доступ только к тем базам данных, которые ей действительно необходимы
  • Настройте базу данных так, чтобы она принимала подключения только от веб-сервера, чтобы минимизировать влияниеутечка, не позволяющая злоумышленнику использовать этот пароль из любого старого случайного узла в сети
3 голосов
/ 07 января 2010

Вы можете «доверять» IP вашего веб-сервера (или локальному узлу, если это тот же узел) в pg_hba.conf вашего PostgreSQL и вообще не использовать пароль. По крайней мере, я не думаю, что это менее безопасно, чем хранить пароль базы данных где-нибудь в файловой системе вашего веб-сервера.

Конечно, вы можете попробовать как-то зашифровать и запутать пароль. Но эта безопасность из-за неясности на самом деле не является препятствием для тех, кому удалось проникнуть на ваш веб-сервер, особенно когда весь исходный код Perl доступен для чтения.

1 голос
/ 07 января 2010

Вы можете сохранить пароль в ~ / .pgpass (конечно, для пользователя веб-сервера). Это очевидно не безопасно в виртуальном хостинге, где один и тот же пользователь используется для множества разных веб-сайтов, но если у вас есть выделенные настройки, это часто работает очень хорошо. Смотри http://www.postgresql.org/docs/current/static/libpq-pgpass.html.

Важно хранить его вне общего веб-дерева.

0 голосов
/ 07 января 2010

Использование Брандмауэр IP: фильтр портов на PostgreSQL сервере и ограничение доступа только к IP-адресам вашего веб-сервера.

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