Ответ
Рекомендуется системный подход, от общих проверок к специфическим:
- Пустое значение: Проверка обязательности поля (required attribute/validation).
- Пробелы: Тримминг — пробелы в начале, конце, множественные внутри строки.
- Граничные значения: Минимальная и максимальная допустимая длина (Boundary Value Analysis).
- Некорректные данные (Negative testing):
- Неверный формат (для email, телефона).
- Запрещенные символы (эмодзи, SQL-инъекции типа
' OR '1'='1). - XSS-пэйлоуды (
<script>alert(1)</script>).
- Корректные данные (Positive testing): Стандартные валидные значения.
- Дополнительные сценарии:
- Копирование/вставка (Ctrl+V).
- Международные символы (IDN, email с кириллицей
имя@пример.рф). - Ввод данных, превышающих длину поля (проверка усечения).
Пример чек-листа для поля "Email":
// 1. Пустое
"" -> "Поле обязательно"
// 2. Пробелы
" user@mail.com " -> автоматический тримминг до "user@mail.com"
// 3. Длина
"a@b.c" (мин.) -> OK
// 4. Неверный формат
"user@mail" -> "Неверный формат email"
// 5. Валидное значение
"valid.user@example-domain.com" -> OK
// 6. SQL-инъекция
"' OR 1=1;--" -> "Недопустимые символы" Ответ 18+ 🔞
О, смотри-ка, какой у нас тут системный подход подъехал. Ну давай, разложим по полочкам, как настоящие инженеры, блядь. Только без этой вашей занудной хуйни, а по-человечьи.
Значит, слушай сюда, стратегия такая, чтобы не обосраться на ровном месте. Идём от простого к сложному, как в армии: сначала проверить, есть ли вообще солдат в строю, а потом уже смотреть, не кривой ли у него хер.
- Пустота. Первым делом — хули поле пустое? Нажал «отправить», а там нихуя. Должно вылезти что-то вроде «Заполни, мудила, не видишь, что ли?». Валидация на
requiredили там ручками. - Пробелы. Ах ты, хитрая жопа! Начальные, конечные, да ещё и между словами натыкал. Тут без вариантов — тримминг в ход. Все лишние пробелы нахуй, чтобы
" вася "стало просто"вася". - Длина. Ну тут всё понятно. Минимум — один символ, максимум — сто. Пробуем впихнуть один символ — должно прокатить. Пробуем впихнуть сто один — должно отшить с криком «Многовато будет, дружок!». Граничные значения, ёпта.
- Откровенная дичь (Негативное тестирование). Вот тут начинается веселье, блядь.
- Формат кривой. Для email — нет собаки или точки. Должно ругаться.
- Запрещённая хуйня. Пытаешься всунуть SQL-инъекцию типа
' OR '1'='1или скрипт<script>alert('пиздец')</script>. Поле должно либо экранировать эту хрень, либо сразу говорить «Иди нахуй со своими пэйлоудами».
- Нормальные данные (Позитивное тестирование). Ну а тут уже вводим что-то адекватное, типа
normal.user@example.com. Всё должно быть збс, кнопка «Отправить» светится от счастья. - Особые приколы.
- Копипаст. Вставил из буфера — не должно всё сломаться.
- Интернационализация. Кириллический домен, типа
петя@почта.рф. Система должна это переварить, а не выдать ошибку про «неизвестные символы», как последняя мартышлюшка. - Переполнение. Вводишь текст длиннее, чем отведено в базе. Проверяем, не отвалится ли сервер, когда мы попробуем это сохранить. Должно либо обрезать, либо сказать «Уменьши, мудила, не влезает».
Вот тебе живой пример для поля «Email», чтоб ты понимал, о чём я:
// 1. Пустота — мать беспорядка
"" -> "Эй, поле-то пустое! Заполни!"
// 2. Пробелы — враги человечества
" my@mail.com " -> после тримминга должно стать "my@mail.com"
// 3. Длина — не твой размер
"a@b.c" (минимально валидная хрень) -> OK
"очень-очень-длинный-ёбаный-email-адрес-который-никто-не-станет-использовать@домен-с-ещё-более-длинным-названием-чтобы-доёбаться.com" -> "Слишком дохуя букв"
// 4. Кривые руки
"user@mail" (нет точки) -> "Это что за формат такой, а? Где точка, блядь?"
"' OR 1=1;--" -> "Ага, щас. SQL-инъекции не прокатят, иди отсюда."
// 5. Всё пучком
"good.user+tag@subdomain.example.co.uk" -> Валидация пройдена, ура.
// 6. Особые случаи
"копировал@из.документа" (вставка) -> Должно работать.
"кириллица@пример.рф" -> Должно работать (если система не говно).
"<script>alert('XSS')</script>@test.com" -> Должно либо экранироваться, либо блокироваться. Никаких алертов на странице!
Вот примерно так и проверяем, шаг за шагом, не пропуская ни одного пункта. А то потом вылезет какая-нибудь неожиданная хуйня, и будешь сидеть и думать: «И какого хера это работало вчера?».