
- •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.2.3. Отсутствие таймаута сессии (Insufficient Session Expiration)
Описание
В случае если для идентификатора сессии или учетных данных не предусмотрен таймаут или его значение слишком велико, злоумышленник может воспользоваться старыми данными для авторизации.
Пример
При использовании публичного компьютера, когда несколько пользователей имеют неограниченный физический доступ к машине, отсутствие таймаута сессии позволяет злоумышленнику просматривать страницы, посещенные другим пользователем.
Решение
Метод борьбы – ограничение таймаута сессии.
17.1.2.2.4. Фиксация сессии (Session Fixation)
Описание
Используя данный класс атак, злоумышленник присваивает идентификатору сессии пользователя заданное значение.
К сожалению, системы, использующие cookie, являются наиболее уязвимыми. Большинство известных на настоящий момент вариантов фиксации сессии направлены именно на значение cookie.
В отличие от кражи идентификатора, фиксация сессии предоставляет злоумышленнику гораздо больший простор для творчества. Это связанно с тем, что активная фаза атаки происходит до входа пользователя в систему.
17.1.2.3. Атаки на клиентов (Client-side Attacks)
Этот раздел описывает атаки на пользователей со стороны Веб-сервера.
17.1.2.3.1. Подмена содержимого (Content Spoofing)
Описание
Используя эту технику, злоумышленник заставляет пользователя поверить, что страницы сгенерированы Веб-сервером, а не переданы из внешнего источника.
Решение
Для защиты от данного вида атак нужно лишь отказать от использования фреймов и самое главное никогда не передавать в параметрах абсолютные или локальные пути, к каким бы то ни было файлам.
17.1.2.3.2. Межсайтовое выполнение сценариев (Cross-site Scripting, xss)
Описание
Наличие уязвимости Cross-site Scripting позволяет атакующему передать серверу исполняемый код, который будет перенаправлен браузеру пользователя. Этот код обычно создается на языках HTML/JavaScript, но могут быть использованы VBScript, ActiveX, Java, Flash, или другие поддерживаемые браузером технологии.
Переданный код исполняется в контексте безопасности (или зоне безопасности) уязвимого сервера. Используя эти привилегии, код получает возможность читать, модифицировать или передавать важные данные, доступные с помощью браузера.
Существует два типа атак, приводящих к межсайтовому выполнению сценариев: постоянные (сохраненные) и непостоянные (отраженные). Основным отличием между ними является то, что в отраженном варианте передача кода серверу и возврат его клиенту осуществляется в рамках одного HTTP-запроса, а в хранимом – в разных.
Осуществление непостоянной атаки требует, чтобы пользователь перешел по ссылке, сформированной злоумышленником (ссылка может быть передана по email, ICQ и т.д.). В процессе загрузки сайта код, внедренный в URL или заголовки запроса, будет передан клиенту и выполнен в его браузере. Сохраненная разновидность уязвимости возникает, когда код передается серверу и сохраняется на нем на некоторый промежуток времени. Наиболее популярными целями атак в этом случае являются форумы, почта с Веб-интерфейсом и чаты. Для атаки пользователю не обязательно переходить по ссылке, достаточно посетить уязвимый сайт.
Решение
На данный момент самый распространенный вид атаки, в связи с ростом популярности Веб 2.0 интернет наполнился различными формами обратной связи, к сожалению многие из них не фильтруются должным образом, особую сложность представляют формы, в которых разрешены некоторые теги или какие-либо конструкции форматирования, защитится же от XSS можно только путем тщательного анализа и фильтрации пришедших в запросах данных.