Контролирует ли сервер проверки лучше, чем javascript? - PullRequest
3 голосов
/ 26 декабря 2009

Контроль сервера проверки достоверности лучше, чем в javascript? Они ограничивают нас, поскольку мы можем использовать только те функции, которые они предоставляют. Пожалуйста помоги мне с этим. Я читал об элементах управления сервером проверки в моем собственном блоге

Ответы [ 4 ]

8 голосов
/ 26 декабря 2009

Лучше всего использовать проверку на клиенте и на сервере:

  • Проверка на клиенте дает мгновенную обратную связь без постоянных обращений к серверу. Это облегчает работу пользователей.
  • Требуется проверка на сервере, чтобы убедиться, , что вы не получите неверные данные. В конце концов, злоумышленник может легко разместить данные на вашем сервере, не проходя проверку на стороне клиента.

Теперь, как вы реализуете эту проверку - если встроенные элементы управления "toolkit" выполняют соответствующую проверку для вас, это, очевидно, будет проще, чем написание собственного кода проверки. Валидаторы ASP.NET выполняют как клиентскую, так и серверную проверку. Из документов для BaseValidator:

Проверочные элементы управления всегда проверяют связанный входной контроль на сервер. Контроль проверки также имеют полная реализация на стороне клиента это позволяет браузерам с поддержкой сценариев (например, Microsoft Internet Explorer версия 4.0 и выше) выполнить проверка на клиенте. Сторона клиента проверка повышает валидацию процесс, проверяя пользовательский ввод перед оно отправлено на сервер. Это позволяет ошибки, которые будут обнаружены на клиенте перед отправкой формы, избегая кругосветное путешествие информации необходим для проверки на стороне сервера.

5 голосов
/ 26 декабря 2009

В общем, вы всегда должны выполнять проверку данных на стороне сервера. Это гарантирует, что вы защищаете свой сервер от злонамеренно подделанных запросов, хранилище данных от ввода неверных данных (поскольку БД не позаботится об этом сама). Если вам нравится использовать инструмент или инфраструктуру для проверки входных данных на стороне сервера, как описано в статье, на которую вы ссылаетесь, это ваше дело.

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

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

Возможно, что проверки на стороне сервера и на клиенте управляются одной и той же бизнес-логикой (например, для почтового индекса вы можете использовать одно и то же регулярное выражение для проверки и отклонения ввода как на стороне сервера, так и на стороне клиента). В этом случае у вас возникает проблема синхронизации обоих уровней проверки (что можно сделать, сгенерировав логику page + javascript из той же модели бизнес-логики, что и код обслуживания на стороне сервера).

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

0 голосов
/ 26 декабря 2009

Я никогда не работал над ASP, но, как я полагаю, ValidationServerControls - это встроенные элементы управления, которые предоставляют проверку на стороне сервера, а также проверку на стороне клиента. (Я могу ошибаться). Но насколько я понимаю, проверка компонентов на стороне сервера всегда является обязательным условием; поскольку помещать проверку в javascript никогда не достаточно. Клиент всегда может отключить JavaScript и отправлять контент или использовать сложные инструменты, такие как curl и т. Д., Для отправки запроса на сервер, который может содержать данные; что может сделать инъекцию в ваш код / ​​sql.

Даже если вы пишете проверки JavaScript; Вы должны так или иначе всегда писать код сервера для проверки входящих данных.

Идеальным подходом было бы иметь оба 1. Проверьте данные в JavaScript; так что запросы к серверу ограничены в случае неправильного ввода данных. 2. Проверка на стороне сервера. в случае, если javascript отключен и данные отправляются на сервер.

0 голосов
/ 26 декабря 2009

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

...