Пишемо безпечний код на php

файлові системи

Більшість хостингів, як і більшість веб-розробників, дуже передбачувані. Досить часто веб-сайти мають каталоги загальних файлів, на зразок www.website.com/includes/. Якщо власник сайту розмістить такий каталог на сервері, будь-який бажаючий зможе переглядати файли з цього каталогу.

Багато розробники створюють сценарій підключення до бази даних і називають його connect.inc. Все це дуже передбачувано і не безпечно, адже файли з розширенням .inc обробляються браузером як звичайний текст, тому будь-хто зможе їх прочитати! Не використовуйте файли з таким розширенням для зберігання паролів до баз даних. Якщо ж це необхідно, використовуйте розширення .inc.php, тоді файл буде оброблений як php-скрипт (користувач не побачить виведеного на сторінку тексту). Крім усього перерахованого вище, потрібні директорії слід заборонити від індексації мета-тегом або через файл .htaccess.

адміністрування сайту

Більшість власників сайтів в даний час керують своїми проектами через спеціальні інтерфейси - CMS (система управління контентом), так що багато хто і не знають як користуватися FTP клієнтом. Часто цей інтерфейс розміщується в передбачуваних місцях (як було описано в попередній статті) і його легко знайти. Однак розміщення адмінки в важкодоступному місці мало для повної безпеки.

Зловмисники вдаються до злому адміністративної частини сайту через атаки грубої сили (повний перебір паролів). Перебір паролів по словнику передбачає підстановку всіх паролів до першого збігу. Такий перебір виконується через спеціальні програми (brute force).

Кращим способом захисту від цього буде комбінований метод. По-перше, використовуйте тест Тьюринга (капча). Слід використовувати символи різної висоти і викривленості з додаванням колірного шуму. Переконайтеся, що ця капча НЕ буде зламана за допомогою скрипта оптичного розпізнавання символів.

Параметри бази даних

Налаштуйте свою базу даних так, щоб обмежити можливості користувачів. Таким чином, ви зможете зменшити передбачуваний збиток від їх дій. Сучасні бази даних, такі як MySQL або SQL Server, дозволяють контролювати дії користувачів. Ви можете наділити користувачів правами додавання, редагування, видалення і багатьма іншими. Зазвичай для багатьох проектів досить дозволити користувачам додавати і редагувати дані.

Сервісні команди PHP

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

Наприклад, функція eval () дозволяє розглядати рядок як php-код і виконати його. У деяких випадках це досить корисно. Проте, при використанні eval () користувач може завдати шкоди вашому сайту. Надаючи доступ до даної функції, ви повинні особливо ретельно перевіряти вхідні дані.

Є способи, щоб обійти цю проблему. Не використовуйте eval () та інші системні функції. Для цього в php.ini є директива "disable_functions". За замовчуванням відключені наступні функції: ini_set (), exec (), fopen (), popen (), passthru (), readfile (), file (), shell_exec () and system ().

пильність

Більшість з перерахованих вище проблем можна уникнути шляхом ретельного фільтрації вхідних даних. Сподівайтеся на краще, але готуйтеся до гіршого.

Для бізнес блогу слід вибирати Premium теми Wordpress. На сьогоднішній день можна знайти в Інтернеті безліч якісних тем для WP.

Схожі статті