Безопасность баз данных
Содержание
На сегодняшний день базы данных являются ключевыми компонентами большинства веб-приложений, позволяя предоставлять на сайтах динамический контент. Поскольку в таких БД может храниться очень деликатная или конфиденциальная информация, необходимо очень серьезно относиться к защите базы данных.
Для извлечения или сохранения любых данных вам необходимо открыть соединение с базой данных, отправить корректный запрос, извлечь результат и закрыть соединение. В настоящее время наиболее распространенным стандартом общения является структурированный язык запросов (SQL). Всегда следует помнить о возможности атаки посредством SQL-запроса.
Очевидно, что сам по себе PHP не может защитить вашу базу данных. В этом разделе документации описаны самые основы безопасного доступа и управления данными баз данных в PHP-скриптах.
Запомните простое правило: максимальная защита. Чем больше потенциально опасных участков системы вы проработаете, тем сложнее будет потенциальному взломщику получить доступ к базе данных или повредить ее. Хороший дизайн базы данных и программных приложений поможет вам справиться с вашими страхами.
- Вступление
- Общие рассуждения
- Если PHP установлен как CGI
- Если PHP установлен как модуль Apache
- Session Security
- Безопасность файловой системы
- Безопасность баз данных
- Сообщения об ошибках
- Использование глобальных переменных (Register_Globals)
- Данные, введенные пользователем
- Волшебные кавычки
- Сокрытие PHP
- Необходимость обновлений
Коментарии
The most significant way to protect databases is to simply use authentication! There are production systems online with null and default administrator credentials. See the recent "The Real World" hack...
Rule 1: Simply use authentication instead of not using it... Obviously do not save the credentials in a public-readable file.
Rule 2: Create a subsidiary account with access only to the live schema being used by your PHP app, i.e. never use the global DBMS admin account as a service login.
Rule 3: Block access at the DBMS end to only allow the web server to access the API. Most access is network based so that will involve filtering by IP.
Rule 4: You can obfuscate a bit more by setting a non-standard port but this may require code changes in the API calls you coded.
The above are some simple steps anyone can perform. More serious securing would likely involve setting up SSL connectivity.