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