OWASP Top 10 с практическими примерами

Security2026-10-24TryQuickToolBox

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

1. Нарушение контроля доступа

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

// Уязвимо: нет проверки, принадлежит ли запрошенный ID пользователя аутентифицированному пользователю
app.get('/api/user/:id', (req, res) => {
  const user = getUserById(req.params.id);
  res.json(user);
});

Мера защиты: Обеспечьте проверки контроля доступа на стороне сервера. Используйте ролевое или атрибутное управление доступом и запрещайте по умолчанию.

2. Криптографические ошибки

Конфиденциальные данные, такие как пароли и номера кредитных карт, должны быть зашифрованы при передаче и хранении. Использование слабых алгоритмов или жестко закодированных секретов — распространенные ошибки.

# Уязвимо: использование MD5 для хеширования паролей
import hashlib
hash = hashlib.md5(password.encode()).hexdigest()

Мера защиты: Используйте надежные алгоритмы хеширования с солью, такие как bcrypt или Argon2. Всегда используйте HTTPS (TLS) для передачи данных.

3. Инъекции

Уязвимости инъекций, такие как SQL-инъекции, возникают, когда недоверенные данные передаются интерпретатору как часть команды или запроса.

// Уязвимо: конкатенация строк в SQL-запросе
$sql = "SELECT * FROM users WHERE username = '" . $_GET['username'] . "'";

Мера защиты: Используйте параметризованные запросы или подготовленные выражения. Никогда не конкатенируйте пользовательский ввод напрямую в запросы.

4. Небезопасный дизайн

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

Мера защиты: Моделирование угроз на этапе проектирования, использование безопасных шаблонов проектирования и внедрение ограничения скорости и других мер контроля.

5. Ошибки конфигурации безопасности

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

# Уязвимо: включен режим отладки в production
DEBUG = True

Мера защиты: Ужесточите конфигурации, удалите неиспользуемые функции и автоматизируйте проверки конфигурации.

6. Уязвимые и устаревшие компоненты

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

Мера защиты: Регулярно обновляйте зависимости, используйте инструменты, такие как OWASP Dependency-Check, и следите за CVE.

7. Ошибки идентификации и аутентификации

Слабая аутентификация позволяет злоумышленникам подбирать пароли или перехватывать сессии.

// Уязвимо: нет блокировки учетной записи после неудачных попыток
if (passwordMatches) {
  loginUser();
} else {
  // просто показать ошибку, без ограничения скорости
}

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

8. Нарушения целостности программного обеспечения и данных

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

// Уязвимо: десериализация недоверенных данных
$data = unserialize($_POST['data']);

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

9. Ошибки логирования и мониторинга безопасности

Без надлежащего логирования нарушения остаются незамеченными. Например, отсутствие логирования неудачных попыток входа.

Мера защиты: Логируйте события, связанные с безопасностью, настройте оповещения и имейте план реагирования на инциденты.

10. Подделка запросов на стороне сервера (SSRF)

SSRF возникает, когда злоумышленник может заставить сервер отправлять запросы по непредусмотренным адресам.

// Уязвимо: получение URL из пользовательского ввода без проверки
fetch(req.query.url).then(...)

Мера защиты: Проверяйте и очищайте URL-адреса, используйте белые списки и ограничивайте права сервера.

Сравнительная таблица

РискПримерМера защиты
Нарушение контроля доступаДоступ к данным других пользователей через манипуляцию URLПроверки доступа на стороне сервера
Криптографические ошибкиХранение паролей в открытом видеИспользование надежного хеширования и TLS
ИнъекцииSQL-инъекция через неочищенный вводПараметризованные запросы
Небезопасный дизайнВосстановление пароля раскрывает существование emailМоделирование угроз и безопасные шаблоны
Ошибки конфигурацииВключен режим отладки в productionУжесточение конфигураций
Уязвимые компонентыУстаревшая библиотека с известным CVEРегулярные обновления и проверки зависимостей
Ошибки аутентификацииОтсутствие ограничения скорости на входеMFA и надежные политики
Нарушения целостностиДесериализация недоверенных данныхПроверка подписей и отказ от небезопасной десериализации
Ошибки логированияОтсутствие логов неудачных входовВнедрение логирования и мониторинга
SSRFЗапрос URL, предоставленного пользователемПроверка и белые списки URL

Часто задаваемые вопросы

Что такое OWASP Top 10?

OWASP Top 10 — это регулярно обновляемый список наиболее критических рисков безопасности веб-приложений, публикуемый Open Web Application Security Project (OWASP).

Как часто обновляется OWASP Top 10?

Он обновляется периодически, чтобы отражать новые угрозы и изменения в технологиях. Последнее крупное обновление было в 2021 году.

Достаточно ли OWASP Top 10 для безопасности?

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

Для дополнительной защиты ваших приложений рассмотрите использование инструментов, таких как Nginx Log Analyzer, для мониторинга и обнаружения подозрительной активности в логах вашего сервера.