Безопасность приложения
Урок 18 из 26 курса «Вайбкодинг: курс с нуля». Бесплатно, с анимациями и тестом.
Ошибка 1: ключ в коде
ИИ пишет код, который работает, но не всегда безопасен. Пример на урок: ты сделал ИИ-помощника по домашке для своей параллели. На схеме частые ошибки: красный крестик, а рядом исправление с галочкой. Ошибка 1: ключ к платному API ИИ во фронтенде или в публичном репозитории. Боты постоянно сканируют GitHub и быстро находят ключи. Ключ утёк? Сразу отзови его в кабинете сервиса и создай новый.
Ошибки 2 и 3: открытые двери
Ошибка 2: база без правил доступа, как RLS из урока про базы данных. Тогда любой скачает данные всех учеников. Ошибка 3: админка, то есть страница управления сайтом, спрятана только тем, что нет кнопки. Адрес /admin всё равно можно набрать руками. Проверка «это точно админ?» должна быть на сервере при каждом запросе, а не только в интерфейсе.
Ошибка 4: верить браузеру
Ошибка 4: доверять тому, что прислал браузер. Всё, что во фронтенде, находится на компьютере пользователя. Через инструменты разработчика (клавиша F12) он может поменять любой запрос: цену, свой id (номер пользователя), роль «админ». Правило: сервер сам проверяет, кто прислал запрос и можно ли ему это, и сам считает цены и баллы. На схеме решает сервер, а не браузер.
Ошибка 5: нет лимитов
Ошибка 5: нет ограничений. Каждый вопрос к ИИ-помощнику стоит тебе денег, а бот может задать тысячи вопросов за ночь. Rate limit (ограничение частоты): не больше заданного числа запросов от одного пользователя за минуту, остальным ответ «подожди». Пример: 20 вопросов в минуту на ученика хватит с запасом. Где сервис ИИ позволяет, поставь ещё лимит расходов в его кабинете.
Ошибка 6: дырявые библиотеки
Ошибка 6: дырявые зависимости. Зависимости: чужие библиотеки, которые скачивает npm install (вторая строка на схеме). В старых версиях находят уязвимости, то есть дыры для взлома, поэтому обновляй их. Бери известные пакеты. Ловушка: ИИ иногда выдумывает имя несуществующего пакета, а злоумышленники регистрируют такие имена с вредным кодом. Незнакомый пакет? Проверь, что он реальный и популярный.
Личные данные и проверка
Личные данные: всё, по чему можно узнать человека, например имя, почта, телефон. Собирай только то, без чего приложение не работает: помощнику по домашке хватит почты. Напиши короткую политику конфиденциальности: что собираешь и зачем. Перед запуском попроси агента: «проверь проект на безопасность по этому списку». Но его ответ «всё ок» перепроверь сам, пройдя по схеме.
Проверь себя
- Ключ к API ИИ попал в публичный репозиторий. Что сделать первым?
Правильный ответ: Отозвать ключ в кабинете сервиса и создать новый. Git помнит историю, а боты могли уже скопировать ключ. Только отзыв делает старый ключ бесполезным. - Цена товара пришла в запросе из браузера. Можно ей верить?
Правильный ответ: Нет, сервер должен сам посчитать цену. Фронтенд работает на компьютере пользователя, и он может поменять любой запрос. Https защищает дорогу, а не честность отправителя. - Зачем ИИ-помощнику нужен rate limit?
Правильный ответ: Чтобы бот не сделал тысячи платных запросов. Каждый запрос к ИИ стоит денег. Лимит частоты не даёт одному пользователю или боту сжечь твой бюджет.