Очевидно, что PHP+MySQL+Apache - очень популярная веб -технология. Эта комбинация мощная, масштабируемая и все еще свободна. Тем не менее, настройки PHP по умолчанию не подходят для веб -сайтов, которые уже находятся в сети. Ниже мы можем улучшить политику безопасности PHP, изменяя файл конфигурации по умолчанию!
0x01: отключить функцию обработки файлов удаленного URL -адреса
Как и функция обработки файлов Fopen, которая принимает параметры RUL файла (например: fopen ('http: //www.yoursite.com','r')).), Эта функция может легко получить доступ к удаленным ресурсам. Однако это очень важная угроза безопасности. Отключение этой функции для ограничения файловой функции - хороший выбор. Сделайте следующие изменения в файле php.ini:
Кода -копия выглядит следующим образом:
ALLIGHT_URL_FOPEN = OFF
0x02: отключить регистрацию глобальных переменных
В версиях до 4.2.0 PHP использовал глобальные переменные в качестве входных данных. Эта функция называется Register_Globals. В веб -приложениях это вызвало многие проблемы безопасности, потому что в некоторых случаях это позволяет злоумышленникам легко управлять глобальными переменными. К счастью, функция в 4.2.0 отключена по умолчанию. Это очень опасно. Эта функция должна быть отключена при любых обстоятельствах. Если некоторые сценарии требуют этой функции, то в этом сценарии существует потенциальная угроза безопасности. Изменить pnp.ini, чтобы отключить эту функцию:
Кода -копия выглядит следующим образом:
register_globals = off
0x03: Операции чтения и записи ограничения PHP
Во многих процессах веб -разработки сценарии PHP должны читать и записать операции в локальную файловую систему, такие как/var/www/htdocs/files. Чтобы улучшить безопасность, вы можете изменить разрешения на чтение и записи локальных файлов:
Кода -копия выглядит следующим образом:
open_basedir =/var/www/htdocs/files
0x04: позиционирование
Ограничение времени выполнения PHP, использования памяти, публикации и загрузки является лучшей стратегией, и может быть сделана следующая конфигурация:
Кода -копия выглядит следующим образом:
max_execution_time = 30; Максимальное время выполнения скрипта
max_input_time = 60; Максимальное время, потраченное на анализ
memory_limit = 16m; Максимальная память, используемая одним сценарием
upload_max_filesize = 2m; Максимальная загрузка размер файла
post_max_size = 8m; Максимальный размер почты
0x05: отключить сообщения об ошибках и включить регистрацию
В настройках по умолчанию PHP выведет сообщение об ошибке в браузер. Эта настройка по умолчанию является наиболее разумной конфигурацией в процессе разработки приложения. Тем не менее, это также может пропустить некоторую информацию о безопасности пользователю, например, путь установки и имя пользователя. На веб -сайтах, которые были разработаны, лучше всего отключить сообщение об ошибке и вывести сообщение об ошибке в файл журнала.
Кода -копия выглядит следующим образом:
display_errors = off
log_errors = on
0x06: скрыть файл PHP
Если файл PHP не скрыт, мы можем получить версию сервера PHP с помощью различных методов, например: http://www.example.com/script.php?=phpb8b5f2a0-3c92-11d3-3a9-4c7b08c10000
Очевидно, мы не хотим, чтобы пользователи напрямую получали PHP -версию вашего сайта сервера. К счастью, в php.ini есть переключатель, который может отключить эту функцию:
Кода -копия выглядит следующим образом:
expose_php = off
0x07: конфигурация безопасного режима
По умолчанию PHP может быть настроен в безопасном режиме. В этом режиме Apache запрещает доступ к файлам, переменным среды и бинарным программам. В безопасном режиме самая большая проблема заключается в том, что только владелец файла может получить доступ к этому файлу PHP. Если многие разработчики совместно разрабатывают эту программу, такая обстановка нереальна. Когда вам нужно получить доступ к файлу PHP, вам необходимо изменить владельца файла. Другая проблема заключается в том, что другие программы не могут получить доступ к этим файлам PHP. Следующая конфигурация может изменить разрешения файла для группы пользователей, а не одного пользователя.
Кода -копия выглядит следующим образом:
safe_mode = off
safe_mode_gid = on
Включив Safe_mode_gid, вы можете получить доступ к файлам PHP, используя эту группу Apache. Безопасный режим также очень эффективен в предотвращении бинарного выполнения, однако разработчики хотят иметь возможность запускать некоторые бинарные файлы в определенных конкретных ситуациях. В этих особых случаях вы можете поместить двоичный файл в каталог, например (/var/www/binary), и вы можете сделать следующие настройки:
Кода -копия выглядит следующим образом:
safe_mode_exec_dir =/var/www/binary
Наконец, через следующие настройки вы можете получить доступ к переменным среды сервера, предоставляя префикс «_», который может получить доступ только к переменным среды с указанными префиксами:
Кода -копия выглядит следующим образом:
safe_mode_allowed_env_vars = php_
0x08: ограничить публичный доступ к файлам с помощью определенных имен суффиксов
По соображениям безопасности многие файлы с определенными именами суффиксов не могут быть доступны общественным пользователям. Например, файлы с суффиксом .inc содержат некоторую конфиденциальную информацию, такую как информация о соединении MySQL. Если нет подходящей конфигурации, то каждый пользователь может получить доступ к этому файлу конфигурации. Чтобы повысить безопасность веб -сайта, вам необходимо настроить следующее в файле ..htaccess:
Кода -копия выглядит следующим образом:
<filesmatch>
Заказ разрешает, отрицать
Отрицать от всех
</filesmatch>
0x09: резюме
Конфигурация PHP по умолчанию предназначена для разработчиков. Если веб -сайт предназначен для большого количества пользователей, рекомендуется реконфигурировать PHP.