Принцип «глубокоэшелонированной защиты» гласит, что ограничения должны применяться в нескольких местах, так что если часть данных обходит или проскальзывает через один слой, она попадает в следующий.Хороший пример - в веб-приложении: вы помещаете проверку в javascript на стороне клиента, в код на стороне сервера (PHP / Ruby / ASP / любой другой) и помещаете эти правила в базу данных (например, ограничения внешнего ключа).Таким образом, любые данные, которые проходят проверку Javascript, перехватываются на стороне сервера.Любые данные, прошедшие проверку сервера, фиксируются ограничениями базы данных.
Однако это, похоже, нарушает принцип СУХОЙ (не повторять себя).Здесь у вас есть три места, где повторяются одни и те же правила проверки.Я понимаю, что существуют способы генерации JavaScript на стороне клиента, так что он обеспечивает проверку на стороне сервера.Мой вопрос: как объединить ограничения базы данных и серверный код?Есть ли способ сгенерировать код так, чтобы он автоматически применял ограничения базы данных?