PHP и MySQL
Cтатья "Обеспечение безопасности веб-сайтов" предоставлена Sophos Plc и SophosLabs.
Декабрь 2007 г.
PHP является одним из наиболее распространенных серверных скриптовых языков. Он отличается обширнейшей базой функционального кода, простым синтаксисом, адаптируемым кодом и, что наиболее важно, возможностью взаимодействия с самыми разными базами данных. MySQL — это одна из наиболее популярных СУБД, используемых в сочетании с PHP. Причина заключается в ее эффективности, богатой функциональности, а также простоте настройки и использования.
Язык PHP зачастую критикуют за недостаточный уровень безопасности, поскольку со временем в нем было обнаружено множество потенциальных уязвимостей. Тем не менее, он стабильно развивается, а большинство уязвимостей можно компенсировать за счет надлежащей конфигурации или повышения уровня безопасности разрабатываемого кода.
Вот несколько советов по настройке (разработка безопасного кода обсуждается ниже), касающихся переменных в файле «php.ini»:
Необходимо установить переменную register_globals в значение off.
Необходимо установить переменную safe_mode в значение on.
В переменной open_basedir следует указать базовый каталог веб-сайта.
Необходимо установить переменную display_errors в значение off.
Необходимо установить переменную log_errors в значение on.
Необходимо установить переменную allow_url_fopen в значение off.
Дополнительные сведения, касающиеся этих настроек и причин, по которым они играют столь важную роль, можно найти в следующих источниках: [7,8,9].
При установке MySQL создается база данных «test», используемая по умолчанию, и открытая учетная запись «root» без пароля. Данной учетной записи автоматически предоставляется полный доступ ко всем прочим базам данных на сервере. В связи с этим необходимо проделать следующее:
Сразу изменить пароль учетной записи «root».
Создать новую учетную запись MySQL и предоставить ей минимально необходимые права.
Удалить базу данных «test» и соответствующих пользователей.