Безопасность кода плагина: 7 проверок, которые ловят большинство дыр до релиза
Не доверяйте данным из POST, GET, REST и админки. Любое значение проверяйте на тип, длину и допустимые символы, а перед записью в базу — пропускайте через sanitize_* и prepare.
Для действий в админке и AJAX используйте nonce и проверяйте права через current_user_can. Если этого нет, любой авторизованный пользователь может вызвать чужую логику или подменить действие.
В запросах к базе не склеивайте SQL строками. Используйте $wpdb->prepare, а для вывода в HTML — esc_html, esc_attr, esc_url по месту. Для файлов и путей дополнительно проверяйте, что имя не вышло за пределы нужной директории.
Логику с удалением, оплатой, изменением настроек и загрузкой файлов лучше выносить в отдельные методы и закрывать ранними проверками. Тогда ошибка в одном месте не превратится в уязвимость во всём плагине. Безопасность в WordPress — это не один фильтр, а привычка проверять вход, права и вывод на каждом шаге.
Создание плагинов для WordPress
@plugin_development_pro_ww
Безопасность кода плагина: 7 проверок, которые ловят большинство дыр до релиза
Этот пост опубликован в Telegram-канале Создание плагинов для WordPress. Подписаться можно по ссылке: @plugin_development_pro_ww.