Реклама:

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

Использование минимальных привилегий

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

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

Предупреждение, обнаружение и реагирование

Система защиты складывается не только из контрмер (то есть одной только защиты). В нее следует еще добавить механизмы для обнаружения атак и внедрить стратегию реагирования. Технологии внедрения такого рода функций детально описаны в главе 7.

Создание уровней защиты

Обычно Web-нриложение является последней преградой между пользователями (или злоумышленниками) и внутренними ресурсами, такими, например, как корпоративная база данных. Вам следует обязательно продумать защиту внутренних систем.

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

Некорректный ввод данных

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

Виды отказов

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

Вспомните, сколько было протестировано в процентном соотношении обработчиков ошибок и блоков catch в вашем последнем проекте? Больше пятидесяти процентов? Очень сложно полностью протестировать каждое состояние ошибки. Тестирование элементов в комбинации с областью действия кода обеспечивает эффективный метод автоматизации испытаний и уменьшает вероятность того, что вы забудете выполнить какой-то важный тест или проверить условие. Кроме того, следует проверить защиту приложения с помощью стандартных средстн проникновения, как описано в главе 10. Для вас станет неожиданностью многообразие типов ошибок, которые могут быть запущены этими инструментами в вашем коле.


⇐ Предыдущая страница| |Следующая страница ⇒