Когда следует проверять данные? - PullRequest
0 голосов
/ 08 февраля 2011

Например, если я хочу проверить, является ли ввод только буквенно-цифровыми символами и имеет длину более 10 символов. Должен ли я просто проверить это на стороне сервера? Или на стороне сервера и в самой базе (запросе)? Или просто пойти на удовольствие и проверить его на стороне клиента, на стороне сервера и на стороне базы данных?

Просто пытаюсь найти правильный баланс проверки.

Ответы [ 4 ]

1 голос
/ 08 февраля 2011

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

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

0 голосов
/ 08 февраля 2011

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

Так что сделайте часть этого на стороне клиента ичасть этого на стороне сервера.

Элементы, которые легко проверить на стороне клиента, могут быть:

  • Длина ввода
  • Тип ввода (строка, int, дата, bool)
  • Управляемое полем ограничение на выбор

В зависимости от того, на что похож ваш уровень данных ... Если вы используете процедуры, должна быть встроенная базовая проверка типа данных.

0 голосов
/ 08 февраля 2011

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

Даже если вы не выполняете много дурацких действий на стороне клиента, проверка на стороне клиента очень полезна, поскольку уменьшает запросы к серверу, что может значительно повысить производительность (как воспринимаемую, так и реальную).

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

0 голосов
/ 08 февраля 2011

Всегда проверять серверную часть. Кроме того, выполнение клиентской части может быть полезным, если вы хотите создавать динамические всплывающие окна с ошибками при обработке форм jQuery-ish и тому подобное. Не уверен, что вы подразумеваете под "в запросе" - вы имеете в виду в схеме?

...