Должен ли я дублировать проверку формы на стороне клиента на стороне сервера так же, как проверки на стороне клиента?

Человек может прийти и создать учетную запись.
Я реализовал отличную проверку на стороне клиента, например, если он не предоставит действительный адрес электронной почты, я сразу же сообщу ему, что это недействительный адрес электронной почты (с клиентским JavaScript).

Но проверка на стороне клиента может быть легко обойдена злоумышленником. Поэтому я также использовал ту же проверку на стороне сервера. Но разница в пользовательском опыте. Например, если JavaScript на стороне клиента отключен и пользователь указывает недействительный адрес электронной почты, приложение просто сообщит ему об ошибке (после отправки формы и обновления страницы). Нет больше информации. (потому что я предполагаю, что он злоумышленник, поэтому мой сайт должен иметь ужасный пользовательский опыт для злоумышленника).

Теперь мой вопрос таков: будет ли пользовательский интерфейс моего сайта нормальным, если я это сделаю? (Хорошие сообщения об ошибках пользователям на стороне клиента, но ужасные на стороне сервера, сторона сервера просто вернет ‘error’ после того, как вся форма отправлена ​​для любой неудачной проверки).

Более объяснение:

Всякий раз, когда пользователь вводит недопустимый текст во входные данные, приложение сообщит ему прямо внизу ввода с красным текстом, что он не набрал допустимый текст. (Это произойдет из-за клиентского JavaScript).

Но если каким-то образом JavaScript на стороне клиента был отключен и пользователь вводит недопустимый текст во входные данные, серверная часть будет возвращать пользователю только «ошибку» после отправки страницы.

0

Решение

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

Я не думаю, что на 100% безопасно предполагать, что каждый с отключенным JavaScript не годится, но процент легальных пользователей без JavaScript, вероятно, достаточно мал, чтобы вам не нужно было вкладывать средства в обеспечение такого же уровня пользовательского опыта для них. Это Q&А на ux.stackexchange.com может предложить некоторое понимание этого. (Это немного старо, но я думаю, что его пункты все еще действительны.)

Разумным компромиссом может быть добавление <noscript> отметьте в вашей общей ошибке сообщение, информирующее их о том, что они не увидят подробных ошибок с отключенным JS.

1

Другие решения

Никогда полагаться на проверку на стороне клиента. Это можно легко обойти. Всегда проверить на стороне сервера. Проверка на стороне клиента приятна, так как дает немедленную обратную связь, которая улучшает пользовательский опыт. Но единственное подтверждение, на которое вы можете положиться, — это такое, которое не может быть подорвано пользователем, что означает, что оно должно находиться на сервере (или в любом месте, кроме браузера / устройства клиента).

7

По вопросам рекламы [email protected]