Skip to content
IRC-CodingIRC-Coding
OWASP Top 10InjectionXSSSecurityВеб-приложения

OWASP Top 10: критические угрозы веб-приложений

OWASP Top 10 раскрывает 10 критических уязвимостей: Injection, Broken Authentication, XSS, Security Misconfiguration и методы защиты.

S

schutzgeist

3 min read
OWASP Top 10: критические угрозы веб-приложений

OWASP Top 10: Уязвимости веб-приложений

Этот материал представляет собой глоссарий по OWASP Top 10 с примерами уязвимостей, контрмерами и вопросами для проверки знаний.

Суть в двух словах

OWASP Top 10 — это регулярно обновляемый список десяти наиболее критических уязвимостей веб-приложений, публикуемый организацией OWASP. Он служит отраслевым стандартом для оценки безопасности.

Подробное описание

OWASP Top 10 признан во всей индустрии как стандарт для оценки безопасности веб-приложений. Список выявляет самые частые и серьёзные уязвимости на основе реальных данных об атаках и анализа защиты приложений.

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

Актуальная версия (2021 год) представила новые категории, такие как Insecure Design и Software and Data Integrity Failures. Этот документ считается обязательным чтением для всех, кто работает над информационной безопасностью и разработкой защищённого ПО.

Ключевые точки для проверки знаний

  • 10 основных категорий веб-уязвимостей с подробной классификацией
  • Регулярные обновления на основе статистики реальных атак
  • Требования к экзаменам по разработке и архитектуре систем
  • Концепции безопасности должны учитывать OWASP Top 10
  • Основа для проверок и разработки политик безопасности
  • Injection, XSS, ошибки аутентификации как главные угрозы
  • Профилактика предотвращает большие потери от успешных эксплойтов
  • Необходимо документировать применение требований OWASP в проектах

Основные категории (OWASP Top 10 2021)

  1. A01 – Broken Access Control: Неправильная реализация контроля доступа
  2. A02 – Cryptographic Failures: Слабая или отсутствующая криптография
  3. A03 – Injection: SQL, OS, LDAP инъекции
  4. A04 – Insecure Design: Отсутствие или неправильная архитектура безопасности
  5. A05 – Security Misconfiguration: Неправильная конфигурация систем
  6. A06 – Vulnerable Components: Использование уязвимых библиотек и зависимостей
  7. A07 – Identification & Authentication Failures: Проблемы с идентификацией и аутентификацией
  8. A08 – Software and Data Integrity Failures: Нарушение целостности ПО и данных
  9. A09 – Security Logging and Monitoring Failures: Отсутствие логирования и мониторинга
  10. A10 – Server-Side Request Forgery (SSRF): Подделка запросов со стороны сервера

Примеры из практики

SQL Injection (A03)

// Уязвимый код
String query = "SELECT * FROM benutzer WHERE name = '" + userName + "'";
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(query);

// Безопасный способ с подготовленными запросами
String query = "SELECT * FROM benutzer WHERE name = ?";
PreparedStatement stmt = connection.prepareStatement(query);
stmt.setString(1, userName);
ResultSet rs = stmt.executeQuery();

Cross-Site Scripting (A07)

// Уязвимый код
function zeigeNachricht(nachricht) {
    document.getElementById('output').innerHTML = nachricht;
}

// Безопасный способ
function zeigeNachricht(nachricht) {
    document.getElementById('output').textContent = nachricht;
}

// Или с экранированием
function escapeHtml(text) {
    const div = document.createElement('div');
    div.textContent = text;
    return div.innerHTML;
}

Broken Access Control (A01)

// Уязвимый код
@GetMapping("/admin/users")
public List<User> getUsers(HttpServletRequest request) {
    // Нет проверки прав администратора!
    return userService.getAllUsers();
}

// Безопасный способ
@GetMapping("/admin/users")
public List<User> getUsers(HttpServletRequest request) {
    User currentUser = getCurrentUser(request);
    if (!currentUser.hasRole("ADMIN")) {
        throw new UnauthorizedException("Admin-Rechte erforderlich");
    }
    return userService.getAllUsers();
}

Контрмеры

Общие принципы безопасности

  • Defense in Depth: несколько уровней защиты
  • Least Privilege: предоставление минимально необходимых прав
  • Security by Design: интеграция безопасности на этапе проектирования
  • Regular Updates: своевременное обновление систем и зависимостей

Специфические меры

  • Input Validation: проверка всех входных данных от пользователей
  • Output Encoding: правильное экранирование выходных данных
  • Parameterized Queries: использование параметризованных запросов против SQL инъекций
  • Strong Authentication: многофакторная аутентификация
  • HTTPS: обязательное использование шифрованного протокола
  • Security Headers: применение CSP, HSTS, X-Frame-Options

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

Плюсы OWASP Top 10

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

Минусы

  • Неполнота: не охватывает все возможные уязвимости
  • Ложное чувство безопасности: сосредоточение только на Top 10 может привести к игнорированию других рисков
  • Устаревание: список может быстро потерять актуальность
  • Сложность реализации: требует специальных знаний для применения

Типичные вопросы на экзаменах

  1. Что такое OWASP и почему список Top 10 важен? OWASP — это организация, занимающаяся безопасностью приложений. Список Top 10 определяет приоритеты для наиболее критических рисков.

  2. Объясните, что такое SQL Injection и как её предотвратить! SQL Injection — это внедрение SQL-кода через пользовательский ввод. Защита реализуется через подготовленные запросы и валидацию входных данных.

  3. В чём отличие между XSS и CSRF? XSS (Cross-Site Scripting) выполняет код в браузере жертвы, CSRF (Cross-Site Request Forgery) выполняет действия от имени жертвы.

  4. Почему Security by Design важен? Интеграция безопасности с самого начала проекта эффективнее и дешевле, чем добавление защиты постфактум.

Основные источники информации

  1. https://owasp.org/www-project-top-ten/
  2. https://cheatsheetseries.owasp.org/
  3. https://portswigger.net/web-security
Назад к блогу
Share:

Похожие статьи