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