Выбор Blazor и проверка ввода в EditForm - PullRequest
0 голосов
/ 22 февраля 2020

Безопасна ли проверка в Blazor Editform, например, если обязательный атрибут применяется к полю InputText, хакер не может обойти это и отправить неверный текст на сервер, а как насчет InputSelect или выбрать Items? Все элементы в списке выбора проверены так, что значение вне диапазона не может быть отправлено на сервер? В основном на стороне сервера Blazor.

1 Ответ

0 голосов
/ 22 февраля 2020

Не думаю, что проверка имеет какое-либо отношение к безопасности? Все дело в плавности и эффективности пользовательского интерфейса. Проверки безопасности должны выполняться на сервере, а не на стороне клиента (WebAssembly Blazor App или Server Blazor App).

Используя атрибут Required, вы «заставляете» пользователя вводить значение, мы также можем принудительно пользователь должен предоставить данный тип значения, например значение, состоящее из цифр c символов; и хакер может изменить эти значения, так же, как он сделал бы в JavaScript, поэтому проверка безопасности выполняется на сервере, а не на клиенте ...

Должен ли я проверять снова в HandleValidSubmit (Редактировать событие отправки формы), Даже на стороне Blazor Server?

Нет, вы не должны. Если выполняется метод HandleValidSubmit, это означает, что указанная вами модель c прошла проверку. Зачем подтверждать это еще раз? Но я знаю, откуда возникает этот вопрос ... и вы правы, спрашивая, что: хотя ваша модель прошла проверку, она может быть изменена хакером на пути к базе данных, независимо от того, используете ли вы на стороне клиента Blazor или Server Блазор Различие между Blazor на стороне клиента и Blazor на стороне сервера в этом отношении заключается в том, что при первом использовании проверка модели выполняется, как я уже упоминал ранее, только для дрожания текучести, например, не позволяя пользователю ввести текст как шестьдесят для его возраста, но 60. Теперь, без использования и применения этого ограничения, код где-то на сервере может вызвать исключение. Чтобы быть уверенным, ваша база данных должна выдавать ошибку, потому что она ожидает получить значение цифры c, а не строковое значение. Чтобы предотвратить это перетекание с сервера на клиент, мы используем проверку модели, как в приложениях Razor Pages и приложениях MVC, в которых проверка выполняется как на клиенте, так и на сервере. Кстати, когда вы добавляете размещенное приложение WebAssembly Blazor, для вас создается решение с тремя папками. Один называется Shared, и он должен содержать вашу модель. Он называется Shared, потому что он используется как клиентской, так и серверной частью приложения WebAssembly Blazor.

Однако, когда вы используете второе (я говорю о разнице), ваш код всегда выполняется на сервер, и только Html diffs передаются клиенту Signlr вашего серверного приложения Blazor, и он, клиент Signlr, применяет данные Html diffs к элементу Html.

Обычно В действительности, между приложением Razor Pages и приложениями MVC нет никакой разницы между двумя разновидностями Blazor. Проверка на стороне клиента для простоты использования и эффективности, проверка на стороне сервера для обеспечения соблюдения правил проверки.

Должен ли я выполнить проверку снова в HandleValidSubmit

Кстати иногда вам может понадобиться использовать, скажем, проверку, которая должна выполняться на сервере, в дополнение к проверке, выполняемой атрибутами проверки ... в этом случае вы можете реализовать эту дополнительную проверку в методе-обработчике, который у вас будет добавить к атрибуту OnSubmit компонента EditForm

Надеюсь, это поможет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...