Вы ищете искомый термин подтверждение ввода .
Если вы укажете, что если вы используете элемент управления, в котором невозможно ввести неверные данные, вы можете помочь клиенту, но выпо-прежнему необходимо реализовать правильную проверку на сервере.
Я имею в виду, что следует ожидать от пользователей, которые назвали 30 февраля 2021 года своими днями рождения, а не защиту от атак с использованием инъекций
Почему бы и нетсделать оба?Есть ли конкретная причина, по которой вы хотите оставить себя открытыми для инъекционных атак?
Предположим, что пользователь отправляет на сервер строку, либо введенную им самостоятельно, либо ту, которая была отправлена элементом управления, на который вы наделилистраница.Первая часть - найти библиотечную функцию для разбора строки на типизированные данные.В вашем примере вы можете использовать DateTime.TryParse
для разбора строки на дату.Это не удастся для вашего данного примера, так как указанная дата недействительна.Если вы не можете найти библиотечную функцию для того, что вы пытаетесь проанализировать, вы можете попробовать написать синтаксический анализатор самостоятельно.Для простых проверок вы можете выразить это как регулярное выражение.Для более сложных входных данных вам может понадобиться написать некоторый код, который выполняет проверку, возможно, даже используя библиотеку синтаксического анализатора, чтобы помочь вам, если язык ввода особенно сложен.
Вторая часть заключается в реализации правил проверки бизнеса, специфичных длятвои нужды.Например, вы знаете, что дата рождения должна быть в прошлом, но не слишком в далеком прошлом.Для этого потребуется определенное суждение, поскольку не исключено, что кому-то, использующему ваш сайт, может быть 100 лет, но очень маловероятно, что ему 200 лет, поскольку никто не считается таким старым.