Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП / ООП / ры_приложений_полная_книга.pdf
Скачиваний:
528
Добавлен:
18.02.2017
Размер:
7.08 Mб
Скачать

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

Независимо от выбранной стратегии обработки запросов необходимо обеспечить разделение функциональных областей путем реализации логики обработки запросов и логики приложения отдельно от UI. Это обеспечивают несколько шаблонов. Четкое разделение функциональных областей при использовании подхода с обратной передачей Web Forms обеспечит шаблон Model-View-Presenter (MVP) или аналогичные ему шаблоны. Шаблон Model- View-Controller (MVC) обычно используется при обработке REST-запросов.

Также при проектировании стратегии обработки запросов руководствуйтесь следующими рекомендациями:

Рассмотрите возможность централизации общих этапов пред- и пост-обработки запросов Веб-страницы для повышения возможности повторного использования логики на страницах. Например, разместите общую логику пред- и пост-обработки в специально предусмотренном для этого HTTP-модуле или базовом классе, наследуемом от ASP.NET-класса Page (Страница).

Выберите соответствующий подход или шаблон для обработки UI. С помощью шаблонов MVC, MVP или аналогичных разделите обработку UI на три роли: модель, представление и контроллер/презентатор. Избегайте смешения в компонентах логики обработки и формирования визуального отображения.

При проектировании представления для обработки больших объемов данных предоставьте ему доступ к модели через использование шаблона Supervising Presenter (или Supervising Controller), который является разновидностью шаблона MVP. Если в приложении нет необходимости поддерживать состояние представления, и имеется лишь ограниченное число событий управления, используйте шаблон MVC.

По необходимости применяйте шаблон Intercepting Filter для реализации этапов обработки в виде подключаемых фильтров.

Обеспечьте защиту всех конфиденциальных данных, передаваемых по сети, особенно по Интернету. Используйте протоколы безопасных каналов, такие как SSL, и предусмотрите шифрование и цифровые подписи для всех особо конфиденциальных данных, передаваемых как по внутренним, так и по внешним сетям.

Аутентификация

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

других типов атак. При проектировании стратегии аутентификации руководствуйтесь следующими рекомендациями:

Определите границы доверия в рамках слоев Веб-приложения. Это поможет понять, где требуется проводить аутентификацию пользователей.

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

По возможности используйте поддерживаемые платформой механизмы аутентификации, такие как аутентификация Windows. Если решено применять аутентификацию с помощью форм, используйте преимущества встроенной поддержки в ASP.NET, не реализуйте собственный механизм аутентификации. Используйте интегрированную аутентификацию или единую регистрацию (SSO), если хотите предоставить пользователям возможность регистрироваться на нескольких сайтах с помощью одного набора учетных данных.

Если приходится хранить пароли в базе данных, не храните их в виде открытого текста; храните хэш (или хэш с шумом) пароля.

Авторизация

Авторизация определяет, какие задачи может осуществлять аутентифицированный пользователь и к каким ресурсам он имеет доступ. Проектирование эффективной стратегии авторизации имеет большое значение с точки зрения обеспечения безопасности и надежности приложения, в противном случае, оно будет уязвимым для разглашения сведений, повреждения или подделки данных и несанкционированного получения прав. Глубокая защита – основной принцип безопасности стратегии авторизации приложения. При проектировании стратегии авторизации руководствуйтесь следующими рекомендациями:

Выполняйте авторизацию пользователей при пересечении ими границ доверия. Используйте авторизацию URL для управления доступом к страницам и каталогам. Выполняйте доступ к нижестоящим ресурсам реализуйте соответственно модели доверенная подсистема, используя доверенное удостоверение, как описывается в главе 19, «Физические уровни и развертывание».

Продумайте, насколько детализированными будут используемые настройки авторизации. Слишком детальная авторизация обусловит слишком высокие издержки на управление; однако меньшая детализация может негативно сказаться на гибкости.

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

Кэширование

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

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

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

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

Подробно кэширование рассматривается в главе 17, «Сквозная функциональность».

Управление исключениями

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

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

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

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

Подробно управление исключениями рассматривается в главе 17, «Сквозная функциональность».

Протоколирование и инструментирование

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

Журналы могут использоваться для выявления подозрительных действий, что часто обеспечивает раннее обнаружение атак на систему. Файлы журналов и аудита могут пригодиться для доказательства правонарушений в случае судебного разбирательства, и пользователи уже не смогут безнаказанно отказываться от своих действий. Аудит считается наиболее достоверным, если данные журнала формируются непосредственно в момент доступа к ресурсу той же процедурой, которая выполняет этот доступ. При проектировании стратегии протоколирования и инструментирования руководствуйтесь следующими рекомендациями:

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

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

Не храните конфиденциальные данные в файлах журналов или аудита.

Навигация

Разделяйте стратегию навигации и логики обработки. Стратегия навигации должна позволять пользователям без труда перемещаться по экранам или страницам приложения. Обеспечьте единообразное представление навигационных ссылок и элементов управления во всем приложении, чтобы не запутывать пользователя и скрыть сложность приложения. При проектировании стратегии навигации руководствуйтесь следующими рекомендациями:

При использовании обратной передачи в Web Forms применяйте такие шаблоны проектирования, как MVP, для отделения обработки UI от формирования визуального отображения вывода. Чтобы избежать смешения логики навигации с компонентами пользовательского интерфейса, обрабатывайте навигацию в Презентаторе (Presenter).

При использовании протокола REST применяйте шаблон MVC, который поможет разнести логику приложения, данные и навигацию в разные компоненты. Типовая реализация MVC-приложения обеспечивает гибкую поддержку навигации через направление запросов в компонент контроллера, который координирует UI и данные приложения.

Соседние файлы в папке ООП