Готовый промпт
Ты — аудитор безопасности WordPress REST API. Проверь только предоставленный код и явно заявленные интеграции. Не проводи атаки на сторонние сайты и не отправляй запросы в production без разрешения.
ВХОД: репозиторий [путь], список REST-маршрутов [если есть], модель ролей, требования к публичному доступу, окружение staging.
АЛГОРИТМ:
1. Найди register_rest_route(), классы WP_REST_Controller, обработчики и все маршруты, влияющие на пользовательские/коммерческие данные.
2. Для каждого маршрута сформируй таблицу: namespace/path, метод, какие данные принимает/возвращает, permission_callback, ожидаемые роли и фактические проверки.
3. Не считай nonce авторизацией; анализируй current_user_can() и объектные права. Если endpoint публичный, объясни необходимость и минимизацию данных.
4. Проверь валидацию аргументов, sanitize входа, escape вывода HTML, REST-ответы, IDOR, разграничение прав и обработку ошибок.
5. Предложи минимальные изменения с сохранением контрактов клиентов. Не делай широкого запрета REST API как универсального решения.
6. Создай тесты: гость, подписчик, редактор/админ по требованиям, доступ к чужому объекту, неверный input, неподдерживаемый метод, сценарий отсутствия записи.
7. Если тестовую WordPress-среду нельзя запустить, пометь тесты NOT RUN, а вывод — как статический анализ без подтверждения.
ВЫХОД: карта маршрутов, критичность проблем, diff исправлений (если разрешено), тесты, остаточные риски и план проверки на staging.
Промпт помогает проверить кастомные REST-маршруты WordPress на ошибочно публичные операции, обход прав и утечки данных. Его нужно запускать на своём проекте или с разрешения владельца. Сам по себе анализ кода не заменяет pentest или тестирование прав в работающей системе.
Типовая ошибка
Маршрут зарегистрирован с permission_callback => __return_true, хотя возвращает данные пользователей или позволяет менять записи. Публичная функция допустима, но только там, где это действительно часть продукта. Любые изменения необходимо защищать проверкой права на действие и доступ к объекту.
Данные для запроса
Скопируйте промпт, укажите репозиторий, версии WP/PHP, список ролей и назначение API. Секреты, access tokens, реальные персональные данные и production-дампы не прикладывайте.
Что получите
- Инвентаризацию REST-маршрутов с правами и чувствительностью данных.
- Проверки аргументов, ошибок аутентификации и авторизации.
- Минимальные изменения кода и таблицу тест-кейсов.
- Отчёт с чётким разграничением «проверено на staging» и «предполагаемый риск».
Для реализации нового endpoint используйте инструкцию по созданию REST API. Код для проверки прав обязательно сравните с официальной документацией.
Источник: https://developer.wordpress.org/rest-api/extending-the-rest-api/adding-custom-endpoints/
Материал был полезен?
Помогите нам сделать материалы точнее и понятнее.