внедрение кода. Примерами границ доверия могут служить пограничный межсетевой экран,
граница между Веб-сервером и сервером базы данных, граница между приложением и
сервисом стороннего производителя.
Определите, какие системы и подсистемы будут взаимодействовать с приложением, и
внешние границы системы, пересекаемые при записи данных в файлы на сервере, вызове
сервера базы данных или вызове Веб-сервиса. Обозначьте точки входа на границах доверия и
точки выхода, в которых выполняется запись данных из клиентского ввода или из
недоверяемых источников, таких как совместно используемые базы данных.
Шаг 2 – Определение ключевых сценариев
После того, как границы доверия в приложении обозначены, необходимо определиться с
ключевыми сценариями, в которых требуется валидация данных. Все вводимые
пользователем данные до тех пор, пока не пройдут валидацию, должны рассматриваться как
злонамеренные. Например, в слое представления Веб-приложения подлежат проверке поля
форм, строки запросов и скрытые поля; параметры запросов GET и POST; загруженные данные
(злонамеренные пользователи могут перехватывать HTTP-запросы и изменять содержимое); и
cookies (которые располагаются на клиентском компьютере и могут быть изменены).
В бизнес-слое ограничения на данные налагают бизнес-правила. Любое нарушение этих
правил рассматривается как ошибка валидации, и бизнес-слой должен сформировать
исключение для представления этого нарушения. При использовании подсистемы управления
правилами или рабочим процессом необходимо обеспечить им проверку результатов каждого
правила на основании данных, требуемых этим правилом, и выводов, полученных в
результате проверки предыдущих правил.
Шаг 3 – Выбор места валидации
На этом этапе определяемся с местом проведения валидации: на клиенте или и на сервере, и
на клиенте. Никогда не полагайтесь только на валидацию на стороне клиента. Используйте ее
для обеспечения более интерактивного UI, но всегда реализуйте также и валидацию на
стороне сервера, чтобы безопасно проверить данные в рамках границ доверия. Валидация
данных и бизнес правил на клиенте может сократить количество циклов запрос-ответ к
серверу и улучшить взаимодействие с пользователем. Для Веб-приложения браузер клиента
должен поддерживать DHTML и JavaScript, в идеальном варианте реализованный в отдельном
файле .js для обеспечения возможности повторного использования и кэширования браузером.
Самый простой подход в Веб-приложении – применение элементов управления валидацией
ASP.NET. Это набор серверных элементов управления, которые могут проводить валидацию
данных на стороне клиента, и также будут автоматически проверять их на стороне сервера.
В Веб-приложении проверка данных и бизнес-правил на стороне сервера может быть
реализована с использованием элементов управления валидации ASP.NET. Также, как
альтернативный вариант для Веб- и других типов приложений, используйте Validation
Application Block (Блок валидации) от группы patterns & practices. Validation Application Block
поможет создать логику валидации, пригодную для повторного использования в разных слоях.
Validation Application Block может применяться в приложениях Windows Forms, ASP.NET и WPF.