Безпека
Ваш код працює! Але чи він безпечний? Чи є ймовірність, що через ваш плагін, зловмисник може отримати доступ до сайту? Майте на увазі, що ваш код може бути запущений на сотнях, можливо навіть мільйонах сайтів, тому безпека має першорядне значення.
Особливу увагу безпеки слід приділяти при:
- створення сторінки опцій плагіна.
- створення шорткодів.
- збереження даних у БД.
- виведення даних на екран.
Виділю три моделі, яким можна слідувати, щоб забезпечити безпеку коду.
1. Безпечне введення
Щоразу, коли PHP код отримує якісь дані:
- Користувач відправляє дані в WordPress через форму.
- дані імпортуються із внутрішнього або зовнішнього джерела.
- обробляється AJAX запит.
- дані надходять у WordPress через всілякі API.
Дуже важливо переконатись, що це безпечно. Зробити це можна шляхом перевірки та очищення даних .
2. Очищення виводу
Щоразу, коли заголовок запису, мета дані, чи інші дані надаються користувачеві – виводяться на екран, їх потрібно очищати. Очищення потрібне щоб запобігти атакам типу: Cross-Site Scripting ( XSS – міжсайтовий скриптинг ).
У WordPress для такого очищення передбачено ряд функцій, всі вони починаються з префікса esc_ , наприклад esc_html() .
3. Перевірка прав доступу
Для запобігання несанкціонованим змінам налаштувань плагіна або вчиненню дій, які користувач не має права виконувати, потрібно перевіряти права доступу.
WordPress пропонує два шляхи:
- перевірка можливостей користувача – див. current_user_can()
- одноразові числа (nonce) – див. всі nonce функції
Обидва ці типу захисту необхідно використовувати разом, тобто. один доповнює інший…
Корисні посилання на тему безпеки WordPress
- How to fix the intentionally vulnerable plugin by Jon Cave
- Mark Jaquith’s Theme and Plugin Security presentation