Якщо PHP встановлено як модуль Apache
Якщо PHP використовується як модуль Apache, він успадковує права користувача, з якими був запущений веб-сервер (зазвичай користувач "nobody"). Це впливає на забезпечення безпеки та реалізацію авторизації. Наприклад, якщо ви використовуєте PHP для доступу до бази даних, яка не має вбудованого механізму розмежування доступу, вам доведеться забезпечити доступ до бази даних для користувача 'nobody'. У такому разі шкідливий скрипт може отримати доступ до бази даних та модифікувати її, навіть не знаючи логіна та пароля. Цілком можлива ситуація, коли веб-павук неправильними запитами на сторінку адміністратора бази даних може знищити всі ваші бази даних. Ви можете уникнути такої ситуації за допомогою авторизації Apache або розробивши власну модель доступу, використовуючи LDAP, файли .htaccess або будь-які інші технології, впроваджуючи відповідний код у ваші PHP-скрипти.
Досить часто використовуються такі налаштування безпеки, при яких PHP (мається на увазі користувач, з правами якого виконується Apache) має мінімальні привілеї, наприклад, відсутня можливість запису в директорії за допомогою PHP. Або, наприклад, немає можливості працювати з базою даних. При цьому система безпеки не дозволяє записувати як "хороші", так і "погані" файли або провести "хороші" або "погані" транзакції.
Найпоширенішою помилкою є запуск Apache із правами суперкористувача або будь-яке інше розширення повноважень веб-сервера.
Розширення привілеїв веб-сервера до повноважень суперкористувача загрожує працездатності всієї системи, тому такі команди, як sudo, chroot та інші способи запуску з правами суперкористувача, повинні виконуватися виключно тими, хто професійно розуміється на питаннях безпеки.
Існує кілька простих рішень. Використовуючи open_basedirВи можете обмежити дерево доступних директорій для PHP. Ви також можете визначити область доступу Apache, обмеживши всі дії, що вчиняються з Інтернету не користувачами або несистемними файлами.