Страницы

Поиск по вопросам

понедельник, 1 октября 2018 г.

Нужно ли валидировать данные на стороне сервера, если поля ввода итак уже выполняют эту функцию?

У меня всего два поля: имя пользователя и email. Правила валидации очень простые: имя 1-255 символов и email в соответствии с регулярным выражением; оба поля обязательные. Всё это можно достичь на чистом HTML: два поля, второе имеет тип email, и оба с атрибутом required. Даже при отключённом JavaScript сам HTML не даст отправить пустые или невалидные данные.
И тем не менее, нужно ли валидировать данные на стороне сервера (я пишу на Laravel). Мне не так трудно прописать все эти правила, но как это всё тестировать, если пустые или невалидные данные мне просто HTML не даст отправить?


Ответ

Главное правило программирования бэкенда - никогда не доверять клиенту!
Забудьте что там на клиенте есть какая-то валидация. Она сделана не для вас, она сделана для пользователя.
Злоумышленник всегда может нажать F12 и исправить вашу форму как ему будет угодно, удалив всю валидацию к чертям:

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

Комментариев нет:

Отправить комментарий