
- •17. Безопасность в Веб-разработке
- •17.1. Безопасность в Интернете
- •17.1.1. Информационная безопасность
- •17.1.2. Виды угроз и способы борьбы с ними
- •17.1.2.1. Аутентификация (Authentication)
- •17.1.2.1.1. Подбор (Brute Force)
- •17.1.2.1.2. Недостаточная аутентификация (Insufficient Authentication)
- •17.1.2.1.3. Небезопасное восстановление паролей (Weak Password Recovery Validation).
- •17.1.2.2. Авторизация (Authorization)
- •17.1.2.2.1. Предсказуемое значение идентификатора сессии (Credential/Session Prediction)
- •17.1.2.2.2. Недостаточная авторизация (Insufficient Authorization)
- •17.1.2.2.3. Отсутствие таймаута сессии (Insufficient Session Expiration)
- •17.1.2.2.4. Фиксация сессии (Session Fixation)
- •17.1.2.3. Атаки на клиентов (Client-side Attacks)
- •17.1.2.3.1. Подмена содержимого (Content Spoofing)
- •17.1.2.3.2. Межсайтовое выполнение сценариев (Cross-site Scripting, xss)
- •17.1.2.3.3. Расщепление http-запроса (http Response Splitting)
- •17.1.2.4. Выполнение кода (Command Execution)
- •17.1.2.4.1. Переполнение буфера (Buffer Overflow)
- •17.1.2.4.2. Атака на функции форматирования строк (Format String Attack)
- •17.1.2.4.3. Внедрение операторов ldap (ldap Injection)
- •17.1.2.4.4. Выполнение команд ос (os Commanding)
- •17.1.2.4.5. Внедрение операторов sql (sql Injection)
- •17.1.2.4.6. Внедрение серверных расширений (ssi Injection)
- •17.1.2.4.7. Внедрение операторов xPath (xPath Injection)
- •17.1.2.5. Разглашение информации (Information Disclosure)
- •17.1.2.5.1. Индексирование директорий (Directory Indexing)
- •17.1.2.5.2. Идентификация приложений (Web Server/Application Fingerprinting)
- •17.1.2.5.3. Утечка информации (Information Leakage)
- •17.1.2.6.2. Отказ в обслуживании (Denial of Service)
- •17.1.2.6.3. Недостаточное противодействие автоматизации (Insufficient Anti-automation)
- •17.1.2.6.4. Недостаточная проверка процесса (Insufficient Process Validation)
- •17.1.2.7. Вирусы и приложения типа "троянский конь"
- •17.1.3. Ключевые термины
- •17.2. Xss Filter
- •17.2.1. Общее описание
- •17.2.2. Исследование эффективности xss Filter
- •17.2.2.1. Сохраненный вариант
- •17.2.2.2. Dom-based xss
- •17.2.2.3. Отраженный вариант
- •17.2.2.3.1. Внедрение кода в Javascript
- •17.2.2.3.2. Внедрение кода в тег
- •17.2.2.3.3. Внедрение кода в параметр тега
- •17.2.2.3.4. Внедрение кода в html
- •17.2.2.3.5. Использование расщепления http-ответа
- •17.2.2.4. Заключение
- •17.2.3. Ключевые термины
- •17.3. SmartScreen Filter
- •17.3.1. Общие сведения
- •17.3.2. Ключевые термины
- •17.4. Data Execution Prevention
- •17.4.1. Общие сведения
- •17.4.2. Ключевые термины
- •17.5. Https
- •17.5.1. Ssl
- •17.5.2. Https
- •17.5.3. Настройка https
- •17.5.3.1. Пример настройки для iis 6
- •17.5.3.3. Пример настройки для iis 7
- •17.5.4. Ключевые термины
- •17.6. Краткие итоги
17.1.2. Виды угроз и способы борьбы с ними
Сетевые атаки столь же разнообразны, как и системы, против которых они направлены. Некоторые атаки отличаются большой сложностью. Другие может осуществить обычный оператор, даже не предполагающий, какие последствия может иметь его деятельность [10]. Для оценки типов атак необходимо знать некоторые ограничения, изначально присущие протоколу TPC/IP. Сеть Интернет создавалась для связи между государственными учреждениями и университетами в помощь учебному процессу и научным исследованиям. Создатели этой сети не подозревали, насколько широко она распространится. В результате, в спецификациях ранних версий интернет-протокола (IP) отсутствовали требования безопасности. Именно поэтому многие реализации IP являются изначально уязвимыми. Через много лет, получив множество рекламаций (RFC – Request for Comments), наконец, стали внедряться средства безопасности для IP. Однако ввиду того, что изначально средства защиты для протокола IP не разрабатывались, все его реали зации стали дополняться разнообразными сетевыми процедурами, услугами и продуктами, снижающими риски, присущие этому протоколу.
Далее кратко обсудим классификацию типов атак, которые обычно применяются в Интернете, и перечислим способы борьбы с ними [10, 11, 12, 13].
17.1.2.1. Аутентификация (Authentication)
Раздел, посвященный аутентификации описывает атаки, направленные на используемые Веб-приложением методы проверки идентификатора пользователя, службы или приложения.
17.1.2.1.1. Подбор (Brute Force)
Описание
Подбор – автоматизированный процесс проб и ошибок, использующийся для того, чтобы угадать имя пользователя, пароль, номер кредитной карточки, ключ шифрования и т.д.
Существует два вида подбора: прямой и обратный. При прямом подборе используются различные варианты пароля для одного имени пользователя. При обратном перебираются различные имена пользователей, а пароль остается неизменным.
Решение
Традиционным методом борьбы с подбором пароля является, ограничение на количество ошибочных вводов пароля. Существует множество вариантов реализаций этой идеи, от самых простых – статическое ограничение, например не более трех ошибок, до сложно реализованных динамических, с увеличивающимся промежутком времени запрета между запросами.
17.1.2.1.2. Недостаточная аутентификация (Insufficient Authentication)
Описание
Эта уязвимость возникает, когда Веб-сервер позволяет атакующему получать доступ к важной информации или функциям сервера без должной аутентификации. Интерфейсы администрирования через Веб – яркий пример критичных систем. В зависимости от специфики приложения, подобные компоненты не должны быть доступны без должной аутентификации.
Пример
Многие Веб-приложения по умолчанию используют для административного доступа ссылку в корневой директории сервера (/admin/). Обычно ссылка на эту страницу не фигурирует в содержимом сервера, однако страница доступна с помощью стандартного браузера. Поскольку пользователь или разработчик предполагает, что никто не воспользуется этой страницей, так как ссылки на нее отсутствует, зачастую реализацией аутентификации пренебрегают. И для получения контроля над сервером злоумышленнику достаточно зайти на эту страницу.
Решение
Решение достаточно просто – при входе в администраторскую часть сайта, пользователь обязан провести дополнительную аутентификацию, не смотря на общую на сайте.