Описание тега mod-php
Есть (как минимум) два способа запустить PHP при работе с Apache:
- Использование CGI: процесс PHP запускается Apache, и именно этот процесс PHP интерпретирует код PHP, а не сам Apache
- Использование PHP в качестве модуля Apache (называемого
mod_php
): интерпретатор PHP в таком случае "встроен" в процесс Apache: нет внешнего процесса PHP - это означает, что Apache и PHP могут лучше взаимодействовать.
Когда PHP используется в качестве модуля Apache, он наследует права пользователя Apache (обычно права пользователя "nobody"). Это несколько повлияет на безопасность и авторизацию. Например, если вы используете PHP для доступа к базе данных, если эта база данных не имеет встроенного контроля доступа, вам придется сделать базу данных доступной для пользователя "никто". Это означает, что вредоносный сценарий может получить доступ к базе данных и изменить ее, даже без имени пользователя и пароля. Вполне возможно, что веб-паук может наткнуться на веб-страницу администратора базы данных и сбросить все ваши базы данных. Вы можете защититься от этого с помощью авторизации Apache или можете разработать свою собственную модель доступа с использованием LDAP, файлов.htaccess и т. Д. И включить этот код как часть ваших сценариев PHP.
Часто после того, как безопасность установлена до такой степени, что пользователь PHP (в данном случае пользователь apache) имеет очень небольшой риск, связанный с ней, обнаруживается, что PHP теперь не может записывать какие-либо файлы в каталоги пользователей. Или, возможно, ему был запрещен доступ или изменение баз данных. Он в равной степени защищен от записи хороших и плохих файлов или ввода хороших и плохих транзакций базы данных.
Частой ошибкой безопасности, совершаемой на этом этапе, является разрешение root-прав apache или расширение возможностей Apache каким-либо другим способом.
Повышение разрешений пользователя Apache до root чрезвычайно опасно и может поставить под угрозу всю систему, поэтому использование sudo'ing, chroot'ing или иного запуска от root'а не должно рассматриваться теми, кто не является специалистом по безопасности.
Есть несколько более простых решений. Используя open_basedir, вы можете контролировать и ограничивать, какие каталоги разрешено использовать для PHP. Вы также можете настроить области только для apache, чтобы ограничить всю веб-активность не пользовательскими или несистемными файлами.