TGStat
TGStat
Введите текст для поиска
Расширенный поиск каналов
  • flag Russian
    Язык сайта
    flag Russian flag English flag Uzbek
  • Вход на сайт
  • Каталог
    Каталог каналов и чатов Региональные подборки Тематические подборки Платные каналы Поиск каналов
    Добавить канал/чат
  • Рейтинги
    Рейтинг каналов Рейтинг чатов Рейтинг публикаций
    Рейтинги брендов и персон
  • Аналитика
  • Поиск по публикациям
  • Мониторинг Telegram
  • Продвижение
    Реклама через Яндекс Бизнес Реклама в каналах через TGStat Agency Реклама на сайте TGStat.ru
Кокосовый QA 🥥(Orsroma) | Обучение на QA/AQA

21 Jan, 14:04

Открыть в Telegram Поделиться Пожаловаться

#полезно

Не верьте фронту на слово. Валидация на фронте ≠ Безопасность

Представим ситуацию: все как обычно, дизайнер надизайнил форму регистрации (да-да, пример банальный, но через него и суть легче донести), фронтендер добавил валидацию полей, всё красиво, кнопки покрашены, формочки нашлепаны и показываются понятные ошибки. Мы идем проверять - вроде и работает, и спецсимволы требует к паролю, и имейл неправильный не введешь... Двинули таску дальше, все гуд!
А потом в проде кто-то регистрируется с email длиной в 10 000 символов, или засовывает в поле "имя" SQL-инъекцию, или отправляет отрицательное количество товара в заказе

А, что, так можно было?:

Валидация на фронте - это про удобство и скорость. Сразу вижу, когда ввёл email без собаки, когда прибор пароль короткий, телефон не по формату. Не нужно отправлять запрос на сервер и ждать ответ, перезагружать страницу, слава богу, уже не в моде. Быстро, приятно, но не надежно
Бэкенд валидация - это про то, что система не сломается, и данные останутся консистентными. Потому что клиент - это ненадёжная среда. Всегда.

Раньше, любой, кто умел открывать DevTools, мог пройти собес спокойно. А сейчас, в эпоху развитого ютюба и в особенности нейросетей может:
- Отключить JavaScript с валидацией
- Отключить CSS стиль, блокирующий кнопку (обычно, это какой-то класс, да еще и с понятным названием)
- Перехватить запрос и изменить данные перед отправкой - сниффер трафика никто не запрещал
- В конце концов использовать скрипт, который отправляет запросы напрямую в апишку, минуя фронтенд вообще


У меня на работе действительно был кейс, где это сделал просто клиент. Но мы не знаем, баг ли на клиенте, логи не нашли, но подозрение, что он умеет пользоваться постманом...

Это не обязательно злоумышленник, причины могут быть разные:
- Баг в клиентском коде, который отправил кривые данные
- Старая версия мобильного приложения с устаревшей валидацией
- Интеграция с апишкой от третьей стороны
- Просто любопытный тестировщик, который проверяет безопасность (да, это ты!)


Давай на простом примере:
Допустим у нас есть запрос, обновляющий почту
апишка для обновления профиля принимает что-то типа:
{
"userId": 12345,
"email": "new@email.com"
}

В данном случае, фронтенд сам подставляет userId текущего залогиненного юзера. Но что мешает изменить это поле на 12346 и обновить чужой профиль? Если бэк не проверяет, что userId из токена авторизации совпадает с userId в запросе - это IDOR (Insecure Direct Object Reference) уязвимость!


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



Поэтому нормальная практика такая:
фронт помогает пользователю,
бэк не верит никому.

Всё, что влияет на деньги, доступы, права и данные, считается валидным только после проверки на сервере.


А пока логика размазана между фронтом и бэком баги будут появляться «из ниоткуда».
Один расчёт забыли обновить, одну проверку продублировали, одну вообще пропустили.
И в итоге система делает ровно то, что ей позволили.

1.8k 3 18 8 61
Каталог
Каталог каналов и чатов Подборки каналов Поиск каналов Добавить канал/чат
Рейтинги
Рейтинг каналов Telegram Рейтинг чатов Telegram Рейтинг публикаций Рейтинги брендов и персон
API
API статистики API поиска публикаций API Callback
Наши каналы
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Почитать
Академия TGStat Исследование Telegram 2019 Исследование Telegram 2021 Исследование Telegram 2023
Контакты
Справочный центр Поддержка Почта Вакансии
Всякая всячина
Пользовательское соглашение Политика конфиденциальности Публичная оферта
Наши боты
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot