Лучший способ сохранить пароль базы данных в сценарии запуска / файл конфигурации?

Если вам удобно редактировать файл functions.php внутри вашего каталога тем, вы можете добавить следующие строки кода:

remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form', 10 );
add_action( 'woocommerce_after_checkout_form', 'woocommerce_checkout_coupon_form' );

Это существенно удалит купон (который подключен до checkout form) и повторно добавить его ПОСЛЕ формы выписки.

В качестве альтернативы вы можете использовать Javascript для «вырезания и вставки» блока html, содержащего поля купона, но это грязный способ кодирования, и я не предложит взять этот маршрут.

8
задан marc_s 4 November 2010 в 05:57
поделиться

7 ответов

Лучший способ защитить Ваш пароль состоит в том, чтобы прекратить использовать тот. Используйте доверительное соединение: Как К: Соединитесь с SQL Server Используя аутентификацию Windows в ASP.NET 2.0. Затем у Вас нет ничего для сокрытия - публикуют web.config и источник к миру, они все еще не могут поразить базу данных.

Если это не будет работать на Вас, используйте созданный в системе шифрования конфигурации в ASP.NET.

10
ответ дан 5 December 2019 в 08:01
поделиться

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

1
ответ дан 5 December 2019 в 08:01
поделиться

Я соглашаюсь с lomaxx: если кто-то уже находится на сервере или имеет широкий доступ к нему (как системный администратор), игра в значительной степени закончена. Таким образом, идея состояла бы в том, чтобы использовать сервер, Вы полагаете, что это безопасно до градуса, которым Вы хотите, чтобы это было. Конкретно:

  • Необходимо доверять системным администраторам
  • Необходимо доверять кому-либо еще, кто выполняет код того же сервера (это - то, почему общий хостинг является большим нет - нет для меня),

Кроме того, переменные среды, кажется, популярный выбор для хранения этих типов учетных данных, потому что это означает, что доступ к источнику только (например, путем взлома dev поля) не показывает его непосредственно, и также это может быть приятно локализовано для каждого сервера (dev, тест, и т.д.).

3
ответ дан 5 December 2019 в 08:01
поделиться

разъяснение: с точки зрения безопасности, пригодность для обслуживания (например, если вход в систему должен измениться, может я найти его позже, и т.д.),

@lomax: возможно, я не мог бы хотеть, чтобы все с доступом к физическому серверу (например, системные администраторы) видели пароль.

Спасибо!

1
ответ дан 5 December 2019 в 08:01
поделиться

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

Более сложная альтернатива должна настроить выделенный сервер безопасного пароля что также:

  • предоставляет услугу дешифрования пароля
  • на самом деле хранит пароли для использования другим меньшим количеством защищенных серверов

В зависимости от используемых сетевых протоколов это не может защитить от системного администратора жулика с tcpdump. И это, вероятно, не защитит от решительного системного администратора с отладчиком, также. В той точке могло бы быть пора посмотреть на что-то как билеты Kerberos.

1
ответ дан 5 December 2019 в 08:01
поделиться

Можно испечь симметричный ключ шифрования в двоичный файл и иметь тот двоичный файл, читает зашифрованное имя пользователя/пароль из файла на диске, когда это запускает.

Однако это не действительно намного больше, чем путаница, так как Ваш код, вероятно, будет сохранен в некотором исходном репозитории где-нибудь.

Я предположил бы, что Вы будете лучше обслуживаться, чтобы управлять доступом к Вашим серверам и физически и по сети с помощью брандмауэра и пузыря частной сети, и сохранить пароли в ясном (или основывать 64 закодированных) на диске с полномочиями, заблокированными вниз пользователю выполнения для веб-приложения.

Можно также заблокировать вниз сервер базы данных, чтобы только принять соединения от машин веб-приложения IP.

В конечном счете Ваша проблема состоит в том, что ключ (Ваша пара имени пользователя/пароля DB) должен быть доступен для программного, необслуживаемого использования Вашими веб-приложениями.

0
ответ дан 5 December 2019 в 08:01
поделиться

PostgreSQL предлагает хорошее решение для такой ситуации в своей документации. По сути, вы используете ssh для соединения порта на вашей машине с портом сервера PostgreSQL на удаленной машине. Это имеет три этапа аутентификации:

  1. Ограничьте доступ к локальному порту, например, позвольте подключаться к нему только определенному пользователю.
  2. Установите беспарольное подключение к хосту PostgreSQL с помощью ssh от имени определенного пользователя.
  3. Разрешите пользователю, от имени которого подключается ssh, иметь локальный доступ к PostgreSQL без пароля.

Это сводит безопасность к тому, что ваши учетные записи пользователей защищены, конфигурация ssh надежна, и вам не нужен пароль, хранящийся где-либо.

Edit: Я должен добавить, что это будет работать с любой базой данных, которая слушает TCP/IP порт. Так получилось, что это описано в PostgreSQL. И вам понадобится iptables (или эквивалент в Linux) для ограничения портов. См. здесь.

5
ответ дан 5 December 2019 в 08:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: