Выбор между клиентской и серверной обработкой данных часто делают интуитивно. Результат — либо лишние запросы, либо бреши в безопасности. Вот критерии:
На клиенте оставляй:
— Форматирование (маски для номеров, даты, валюта) — улучшает UX
— Синтаксическая валидация (email на pattern, обязательные поля) — быстрая обратная связь
— Фильтрацию и сортировку больших списков — не нагружает сеть
— Кэширование данных, которые часто повторяются
На сервер отправляй:
— Бизнес-логику (проверка статуса заказа, расчёт скидок, проверка прав доступа) — клиент можно взломать
— Авторизацию и аутентификацию — никогда не доверяй клиенту
— Финальную валидацию всех данных перед сохранением — даже если клиент проверил
— Расчёты, где результат влияет на деньги или безопасность (цена товара, комиссии, баланс)
Главное: клиент может лгать. Даже если в браузере всё выглядит правильно, пользователь может отключить JavaScript или подделать запрос. Поэтому любая проверка, которая влияет на бизнес-логику или защиту данных, должна происходить на сервере. Клиентская валидация — только для удобства, серверная — для безопасности.
Server-Side Теги
@serverside_tags
Клиент vs сервер: где оставить валидацию, где — логику
Этот пост опубликован в Telegram-канале Server-Side Теги. Подписаться можно по ссылке: @serverside_tags.