2011-02-08 2 views
0

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

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

ответ

0

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

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

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

+0

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

0

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

+0

Я имею в виду буквально в запросе, таком как (в t-sql): 'если LEN (@trackerid)> 10 begin - some stuff end' – dotnetN00b

+0

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

-2

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

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

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

  • Длина входного
  • тип ввода (строка, INT, дата, BOOL)
  • поле приводится ограничение по выбору

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

+0

Вам необходимо * сделать все проверки, что вы делаете клиентскую сторону на стороне сервера. Знаете ли вы, насколько легко обойти проверку на стороне клиента? Валидация на стороне клиента - это просто удобство пользователя, а не настоящая методология проверки. –

1

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

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

Смежные вопросы