Как защитить PHP-проект после вайбкодинга от уязвимостей

Как защитить PHP-проект после вайбкодинга от уязвимостей

Защитить PHP-проект после вайбкодинга можно, если проверить его входные данные, доступ к базе, авторизацию, зависимости и настройки сервера, а затем повторить проверку после каждого заметного изменения. ИИ ускоряет разработку, но его код всё равно нуждается в ревью и тестах. Ниже — порядок действий для владельца небольшого сайта или внутреннего инструмента: как найти рискованные места, что проверить в первую очередь и когда подключить разработчика по безопасности.

Почему PHP-проект после вайбкодинга нужно проверять отдельно?

ИИ-агент может написать код, запустить тесты, подключить базу и даже развернуть приложение. Но успешный запуск не доказывает, что сайт безопасен: тесты подтверждают ожидаемое поведение, а не обязательно проверяют, что произойдёт при специально подготовленном вводе.

Особенно внимательно проверьте страницы входа, формы обратной связи, поиск, загрузку файлов и административную часть. Там приложение принимает данные от пользователя или выполняет действия с повышенными правами. Например, форма может показывать правильное сообщение при обычном тексте, но неверно обработать кавычки или неожиданный путь к файлу.

Начните с карты проекта: запишите, какие страницы доступны без входа, где пользователь меняет данные и какие действия доступны администратору. Для более полной проверки используйте чек-лист security review вайбкодинг-проекта.

Что проверить в коде PHP в первую очередь?

Сначала ищите места, где приложение получает данные извне и передаёт их дальше: в SQL-запрос, HTML-страницу, команду или файловую операцию. Не доверяйте значению только потому, что его отправила форма вашего сайта. Пользователь может изменить запрос вручную.

  • SQL-запросы. Проверьте, что приложение использует подготовленные запросы с параметрами, а не собирает SQL из строки, введённой пользователем. Поиск по проекту по запросам к базе поможет составить перечень мест для ревью.
  • Вывод в HTML. Значения, которые ввёл пользователь или вернула база, нужно безопасно экранировать перед показом на странице. Проверьте комментарии, подписи профиля и результаты поиска.
  • Загрузка файлов. Ограничьте типы и размер файлов, задавайте имена на стороне сервера и не позволяйте запускать загруженный файл как PHP-скрипт. Проверьте также, куда именно приложение сохраняет файл.
  • Авторизация. Убедитесь, что сервер проверяет права при каждом действии. Скрытая кнопка в интерфейсе не защищает страницу, если запрос можно отправить напрямую.
  • Ошибки и секреты. Не показывайте посетителям трассировки ошибок и конфигурацию сервера. Пароли и ключи не должны попадать в публичный код, репозиторий или журналы приложения.

Проверяйте не только файлы PHP. Настройки веб-сервера, подключённые библиотеки и конфигурация окружения тоже влияют на защиту проекта.

Как проверять исправления, не полагаясь на ответ ИИ?

Просите агента объяснить, какие файлы он изменил, откуда приходят данные и как приложение проверяет права. Затем просмотрите эти места сами или передайте их разработчику. Просьба «проверь безопасность» слишком общая: задайте конкретную задачу, например проверить SQL-запросы и обработку загрузки файлов.

Для каждой найденной проблемы заведите тест, который воспроизводит её до исправления и проходит после. Проверяйте обычный сценарий и попытку выйти за его границы: например, открыть чужую запись, подставить неожиданный символ или передать файл с неподходящим расширением. Набор тестов пользовательских сценариев можно дополнить по инструкции по добавлению тестов в вайбкодинг-проект.

Если агент умеет запускать команды и работать с инструментами, задайте ему последовательность: сначала анализ, затем изменение, после этого тесты и короткий отчёт по результатам. Такой маршрут работы можно закрепить в скилле. Однако итоговые изменения всё равно стоит просмотреть: автоматический помощник может пропустить проблему или ошибочно объявить проверку успешной.

Какие типичные ошибки мешают защите?

  • Считать, что отсутствие ошибок на главной странице означает безопасность всего сайта.
  • Проверять код только по текстовому объяснению агента, не запуская тесты и не просматривая изменения.
  • Ограничивать доступ только в интерфейсе, не проверяя серверную обработку запросов.
  • Исправить одну форму и забыть о похожих местах, где данные проходят тем же путём.
  • Внести правку прямо на работающем сайте, не проверив её сначала на копии проекта.
  • Отключить сообщения об ошибках для посетителей, но оставить секреты и подробные ошибки в общедоступных журналах.

После проверки сохраните список уязвимых участков и принятых решений. При следующем изменении формы или авторизации этот список подскажет, какие тесты запустить повторно.

Начните с карты страниц и действий, затем проверьте обработку ввода, права доступа и настройки файлов. После исправлений запустите тесты на обычные и некорректные запросы. Если проект принимает платежи, хранит важные данные или уже подвергался атаке, перед публикацией передайте код и конфигурацию на независимое ревью.