Где должна проводиться проверка данных? - PullRequest
13 голосов
/ 27 января 2011

Я читал противоречивые философии о том, где должна проводиться проверка данных, и это просто сбивает меня с толку. Некоторые говорят, что это должно быть только в базе данных. Другие говорят, что правила валидации должны быть отражены в других слоях, таких как bll или ui.

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

Ответы [ 2 ]

9 голосов
/ 27 января 2011

Мои 2 цента:

Проверка данных должна выполняться в двух местах:

  1. Точка, в которой обрабатываются данные, например, проверка входных параметров в запросе SQL.

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

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

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

3 голосов
/ 27 января 2011

это должно быть сделано:

  • в той точке, где он впервые введен
  • в любом месте пути его изменения / манипулирования
  • в любом месте путиможет привести к ошибке или неправильным данным

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

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