Безпека php на сервері

PHP - це один з найпопулярніших серверних мов програмування з відкритим вихідним кодом. Він використовується не тільки для створення сайтів, але і в якості мови програмування загального призначення, а також для написання серверної частини різних веб-додатків.

Виконувати скрипти на PHP можуть веб-сервери Apache, Nginx і Lighttpd. Також PHP може виконуватися інтерпретатором прямо з командного рядка. Але оскільки PHP встановлений на сервері, він може створити ряд проблем з безпекою, тому його потрібно застосовувати обережно.

Всі програми містять уразливості і PHP не виняток. У цій статті ми зібрали поради, які допоможуть вам підтримувати безпеку в PHP, а отже, безпеку вашого сервера на вищому рівні.

Як поліпшити безпеку PHP?

Всі наведені нижче поради розраховані на те, що PHP працює під управлінням Nginx або Apache, сам інтерпретатор PHP недоступний з зовнішньої мережі. А тепер, перейдемо до розгляду того як виконується захист php коду, сайту і сервера в цілому.

1. Знайте ворога в обличчя

Додатки на основі PHP можуть піддаватися різним типам атак, ось основні з них:

  • XSS - це вразливість в веб-додатках, за допомогою якої зловмисники можуть виконувати довільний jаvascript код в браузері користувачів, і таким чином, вкрасти його дані. Виникає через відсутність перевірки на даних скриптів правильність;
  • SQL ін`єкція - це вразливість в коді роботи з базою даних. Якщо для користувача введення невірно фільтрується скриптом, і використовується для формування запиту до бази даних, то зловмисники можуть виконати будь-які запити до бази даних. Для запобігання такої проблеми рекомендується фільтрувати дані функцією mysql_real_escape_string () перед відправкою запиту;
  • Завантаження файлів - дозволяє відвідувачеві завантажувати файли на ваш сервер. Завантаживши певний тип файлів, користувачі можуть отримати доступ до системи або навіть вкрасти інформацію з бази даних, тому потрібно стежити щоб можна було завантажувати тільки картинки;
  • віддалене виконання - зловмисник може віддалено виконувати php файли, які є на сервері, тому разом з можливістю завантаження PHP файлів це становить серйозну небезпеку;
  • Eval () - дозволяє виконати код PHP, переданий в рядку, часто використовується зловмисниками, щоб приховати свій код на вашому сервері;
  • CSRF атака - дозволяє змусити користувача виконати небажані дії в веб-додатках. Якщо користувач є адміністратором, це може поставити під загрозу весь додаток.

2. Використовуйте тільки необхідні модулі

Щоб подивитися всі скомпільовані модулі PHP виконайте команду:

expose_php = Off

Якщо встановлено значення On, то PHP буде відправляти версію PHP у відповідь на всі запити в заголовку X-Powered-By. Також рекомендується приховати версію Apache і іншу інформацію. Захист php від злому, це не тільки акуратне програмування, а й приховування інформації про систему.

4. Вимкніть динамічні розширення

PHP підтримує динамічне завантаження розширень. За замовчуванням завантажуються всі розширення, конфігураційні файли яких є в /etc/php/conf.d/. Також завантажуються модулі, які вказані директивою extension в основному конфіге php.ini. Ми можете видалити непотрібне.

5. Висновок помилок




Повідомлення про помилки містять багато інформації, не дозволяйте їх дивитися всім користувачам сайту. Наведіть директиву display_errors до такого виду:

log_errors = On
error_log = /var/log/httpd/php_scripts_error.log

6. Забороніть завантаження файлів

Якщо завантаження файлів не потрібна, забороніть її:

file_uploads = On
upload_max_filesize = 1M

Користувачі зможуть завантажувати файли розміром не більше 1 мегабайт, так безпеку в php буде більше.

6. Вимкніть віддалене виконання коду

якщо параметр allow_url_fopen включений, php може використовувати такі файлові функції, як file_get_contents. За допомогою неї скрипт може завантажувати файли з віддалених серверів. Програмісти часто забувають виконати належну фільтрацію даних, і тим самим відкривають уразливість. Для відключення змініть директиву:

allow_url_include = Off

7. Увімкніть безпечний режим SQL




У безпечному режимі SQL, інтерпретатор ігнорує всі аргументи, що передаються в функції mysql_connect і mysql_pcconnect. Але в такому режимі працюватимуть не всі скрипти, наприклад, не буде працювати WordPress, так що використовуйте акуратно. Для включення додайте директиву:

magic_quotes_gpc = Off

9. Контролюйте розмір POST

Метод POST використовується, коли браузер хоче передати веб-сервера певну кількість даних як частина запиту, наприклад, при завантаженні файлу. Зловмисники можуть використовувати великі запити, щоб витратити ресурси сервера. Тому розмір краще обмежити:

max_execution_time = 30
max_input_time = 30
memory_limit = 40M

11. Вимкніть небезпечні функції

PHP містить безліч функцій, які можуть використовуватися для злому сервера, наприклад, ті, які дозволяють виконувати команди оболонки. Щоб відключити, досить їх перерахувати в директиві disable_functions:

cgi.force_redirect = On

13. UID і GID інтерпретатора PHP

Якщо ви використовуєте зовнішній FastCGI сервер, то потрібно щоб він був запущений не від користувача root. Запускайте php від імені непрівелігірованного користувача. Як ви знаєте, у PHP є функції, які дозволяють виконувати команди оболонки. Дуже небезпечно, якщо вони будуть виконуватися від суперкористувача.

14. Обмеження доступу до файлової системи

Директива open_basedir дозволяє встановити каталог, в якому php може отримати доступ до файлів за допомогою таких функцій, як fopen, file_get_contents і т д. Якщо файл знаходиться поза цією директорії PHP відмовиться його відкривати. Ви навіть не зможете використовувати символічні посилання.

upload_tmp_dir = "/ var / lib / php / session"

16. Тримайте програмне забезпечення в актуальному стані

Всі програми можуть містити різні уразливості, тому важливо виконувати регулярне оновлення системи, щоб вчасно застосувати всі патчі безпеки. Потрібно оновлювати не тільки PHP, а весь програмний стек, в тому числі Apache.

17. Використовуйте SELinux

SELinux - це система безпеки, яка використовується за умовчанням в RedHat. Її можна використовувати для запобігання несанкціонованому доступу до файлів і ресурсів. Наприклад, ви можете встановити політики безпеки для веб-сервера Apache або окремого сервера PHP. Це теж відмінний захист PHP і не тільки.

18. Встановіть mod_security

Це модуль Apache для виявлення і запобігання в веб-додатки. Він може захистити php і ваше додаток від XSS і SQL-Inj атак. Наприклад, щоб не дозволяти відкривати файли в / etc / після установки модуля додайте в конфігураційний файл Apache:

SecFilter "delete [[: space:]] + from"
SecFilter "select. + From"

19. Переглядайте журнали

Регулярно переглядайте файли журналів Apache і PHP, ви зможете отримати деякі уявлення про те, як працює сервер і перевірити рівень безпеки.


$ Tail -f /var/log/httpd/php_scripts_error.log

висновки

У цій статті ми розглянули кілька способів збільшити безпеку сайту PHP. Вони допоможуть вам тримати свій сервер у максимальній безпеці. Можливо, це не всі доступні варіанти, якщо ви знаєте інші способи, напишіть в коментарях.

На завершення лекція про безпеку написання скриптів в PHP:

>
Поділися в соціальних мережах:

Схожі
Список серверів openvpnСписок серверів openvpn
Помилка 403 forbidden nginx 1.4 6 ubuntuПомилка 403 forbidden nginx 1.4 6 ubuntu
Установка nginx ubuntu 16.04Установка nginx ubuntu 16.04
Нові мови програмування 2016Нові мови програмування 2016
Обговорюється закриття проекту apache openofficeОбговорюється закриття проекту apache openoffice
Келебії докса - введення в програмування на goКелебії докса - введення в програмування на go
Як налаштувати https-з`єднання?Як налаштувати https-з`єднання?
Системи моніторингу сервера linuxСистеми моніторингу сервера linux
Установка ispmanager 5 на ubuntu serverУстановка ispmanager 5 на ubuntu server
Модулі apacheМодулі apache
» » Безпека php на сервері