Безопасность соединения с базой данных: лучшие практики для защиты информации о соединении в сценариях? - PullRequest
1 голос
/ 04 ноября 2010

Я занимаюсь разработкой веб-приложения, которое потребует использования базы данных MySQL из различных сценариев как на PHP, так и на JavaScript. Я привык к "стандартной" концепции подключения к db mysql_connect("host", "username", "password"), но мне интересно, как сохранить эти строки вдали от посторонних глаз. Я предполагаю, что если сценарии содержат информацию о соединении, то их можно использовать для входа в саму базу данных и разрушения с помощью пользовательской информации и других важных данных.

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

Ответы [ 2 ]

1 голос
/ 04 ноября 2010

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

Я помню, что сталкивался с этим в некоторых книгах и онлайн-ресурсах, но в настоящее время первые несколькоСтраницы Google ничего не возвращают.

Сначала установите две переменные окружения, такие как PHP_MYSQL_USER и PHP_MYSQL_PWD вне PHP.Обратите внимание, что вам может потребоваться перезапустить ваш веб-сервер или даже вашу ОС, чтобы они были активными.

Затем в PHP:

mysql_connect('localhost', getenv('PHP_MYSQL_USER'), getenv('PHP_MYSQL_PWD'));
putenv('PHP_MYSQL_USER=');
putenv('PHP_MYSQL_PWD=');

putenv несколько необязательныЕсли вы включаете в свою систему небезопасные сторонние или пользовательские сценарии и т. д., используя их, вы создаете env.переменные недоступны для остальной части выполнения.

Используя этот подход, даже если кто-то завладеет вашим сценарием, он не будет знать ваши учетные данные БД.Но имейте в виду, что если кто-то загрузит скрипт / оболочку на ваш сервер, он все равно сможет увидеть эти переменные.Вы можете хранить свои загрузочные каталоги в совершенно разных областях, где PHP не является исполняемым, и / или с более низкими разрешениями.Важно, чтобы вы проверяли безопасность своих загрузок, для этого механизма и для любых других серверных вещей.

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

0 голосов
/ 04 ноября 2010

Если кто-то имеет доступ к исходному коду ваших сценариев, чтобы увидеть эти пароли, у вас уже большие проблемы.Убедитесь, что эти сценарии имеют правильные права доступа к файлам и т. Д. (Т. Е. Доступны для чтения только тем, кто в этом нуждается).

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