Головна▸Статті▸Cybersecurity

Безпека веб-додатків: OWASP Top 10 та захист від атак

Безпека веб-додатків — це практика захисту веб-сайтів та веб-додатків від різних кіберзагроз та експлуатації вразливостей. Вона включає захист від атак, які націлені на доступ, зміну, викрадення або знищення даних через веб-додатки.

mysimulator teamОновлено — липень 2026≈ 7 хв читання▶ Відкрити симуляцію

📋 TL;DR - Основні моменти

OWASP Top 10 - найкритичніші вразливості веб-додатків

SQL Injection - атаки через введення SQL коду

XSS (Cross-Site Scripting) - виконання шкідливого JavaScript

CSRF (Cross-Site Request Forgery) - підробка запитів користувача

Безпечна аутентифікація - правильна реалізація входу

Валідація вхідних даних - перевірка всіх вхідних параметрів

Безпечне програмування - принципи створення безпечних додатків

🌐 Що таке безпека веб-додатків?

Безпека веб-додатків — це практика захисту веб-сайтів та веб-додатків від різних кіберзагроз та експлуатації вразливостей. Вона включає захист від атак, які націлені на доступ, зміну, викрадення або знищення даних через веб-додатки.

Веб-додатки є популярною ціллю для кібератак через їх доступність через інтернет та можливість отримання доступу до чутливих даних. Тому важливо реалізувати комплексні заходи безпеки на всіх рівнях веб-додатку.

🏆 OWASP Top 10 - Найкритичніші вразливості

1. A01:2021 – Broken Access Control

Порушений контроль доступу - найкритичніша вразливість, коли користувачі можуть діяти поза своїми призначеними дозволами.

Приклади атак:

Зміна URL для доступу до чужих даних

Підвищення привілеїв через маніпуляцію параметрами

Обхід авторизації через API

Зміна HTTP метода (GET на POST)

Заходи захисту:

Реалізація принципу найменших привілеїв

Централізована логіка авторизації

Перевірка дозволів на кожному запиті

Відмова за замовчуванням

2. A02:2021 – Cryptographic Failures

Криптографічні невдачі - раніше "Sensitive Data Exposure", коли чутливі дані не захищені належним чином.

Приклади проблем:

Зберігання паролів у відкритому вигляді

Використання слабких алгоритмів шифрування

Передача даних через незахищених каналів

Неправильне управління ключами

Заходи захисту:

Класифікація даних за рівнем чутливості

Використання сильних алгоритмів шифрування

Безпечне зберігання ключів

Використання HTTPS для всіх з'єднань

3. A03:2021 – Injection

Ін'єкції - введення шкідливого коду через ненадійні вхідні дані.

Типи ін'єкцій:

SQL Injection - ін'єкція SQL коду

NoSQL Injection - ін'єкція в NoSQL бази

LDAP Injection - ін'єкція LDAP запитів

Command Injection - виконання системних команд

Заходи захисту:

Параметризовані запити (prepared statements)

Валідація та санітизація вхідних даних

Використання ORM

Принцип найменших привілеїв для БД

4. A04:2021 – Insecure Design

Небезпечний дизайн - вразливості, закладені в архітектуру та дизайн додатку.

Приклади проблем:

Відсутність threat modeling

Недостатня безпека в архітектурі

Відсутність безпечних паттернів

Недостатня безпека за замовчуванням

Заходи захисту:

Threat modeling на етапі проектування

Безпечні архітектурні паттерни

Security by Design

Регулярні архітектурні рев'ю

5. A05:2021 – Security Misconfiguration

Неправильна конфігурація безпеки - небезпечні налаштування компонентів.

Приклади проблем:

Застарілі компоненти з вразливостями

Неправильні налаштування безпеки

Відкриті порти та сервіси

За замовчуванням паролі та налаштування

Заходи захисту:

Регулярне оновлення компонентів

Безпечна конфігурація за замовчуванням

Автоматизоване тестування конфігурації

Мінімізація поверхні атаки

6. A06:2021 – Vulnerable and Outdated Components

Вразливі та застарілі компоненти - використання бібліотек та фреймворків з відомими вразливостями.

Ризики:

Відомі вразливості в залежностях

Відсутність оновлень безпеки

Недостатній моніторинг компонентів

Складність оновлення через залежності

Заходи захисту:

Регулярне сканування залежностей

Автоматичні оновлення безпеки

Моніторинг CVE баз

Використання лише перевірених компонентів

7. A07:2021 – Identification and Authentication Failures

Невдачі ідентифікації та аутентифікації - раніше "Broken Authentication".

Приклади проблем:

Слабкі паролі та політики

Відсутність двофакторної аутентифікації

Небезпечне зберігання паролів

Відсутність захисту від brute force

Заходи захисту:

Сильні політики паролів

Двофакторна аутентифікація

Хешування паролів з сіллю

Захист від атак перебору

8. A08:2021 – Software and Data Integrity Failures

Невдачі цілісності ПЗ та даних - новий пункт, пов'язаний з CI/CD та безпекою ланцюжка постачання.

Приклади проблем:

Небезпечні CI/CD процеси

Відсутність перевірки цілісності

Небезпечні оновлення

Компрометація ланцюжка постачання

Заходи захисту:

Безпечні CI/CD процеси

Цифрові підписи та сертифікати

Перевірка цілісності компонентів

Моніторинг ланцюжка постачання

9. A09:2021 – Security Logging and Monitoring Failures

Невдачі логування та моніторингу безпеки - раніше "Insufficient Logging & Monitoring".

Приклади проблем:

Відсутність логування подій безпеки

Недостатній моніторинг

Відсутність алертів

Неправильне зберігання логів

Заходи захисту:

Комплексне логування подій

Реалтайм моніторинг

Автоматичні алерти

Централізоване зберігання логів

10. A10:2021 – Server-Side Request Forgery (SSRF)

Підробка запитів на сервері - змушування сервера виконувати запити до неочікуваних ресурсів.

Приклади атак:

Доступ до внутрішніх сервісів

Обхід фаєрволів

Читання локальних файлів

Атаки на метадані хмарних сервісів

Заходи захисту:

Валідація URL та IP адрес

Білий список дозволених доменів

Відключення HTTP редиректів

Використання DNS rebinding захисту

💉 SQL Injection - Детальний розгляд

Що таке SQL Injection?

SQL Injection — це техніка атаки, при якій зловмисник вставляє шкідливий SQL код у вхідні поля додатку, щоб отримати несанкціонований доступ до бази даних.

Типи SQL Injection:

Union-based - використання UNION для об'єднання запитів

Error-based - використання помилок БД для отримання інформації

Boolean-based - використання логічних операцій

Time-based - використання затримок для визначення результатів

Приклад атаки:

Заходи захисту:

Prepared Statements - параметризовані запити

Stored Procedures - використання процедур БД

Input Validation - валідація вхідних даних

Least Privilege - мінімальні права для БД

WAF - веб-фаєрволи

-- Вхідні дані: admin' OR '1'='1' -- -- Оригінальний запит: SELECT * FROM users WHERE username = 'admin' OR '1'='1' --' AND password = 'password' -- Результат: повертає всіх користувачів

🌐 Cross-Site Scripting (XSS)

Що таке XSS?

XSS — це вразливість, яка дозволяє зловмисникам вставляти шкідливий JavaScript код у веб-сторінки, який виконується в браузері жертви.

Типи XSS:

Шкідливий скрипт відображається безпосередньо у відповіді сервера:

Шкідливий скрипт зберігається на сервері та виконується при кожному відвідуванні:

-- Коментар: -- Зберігається в БД та відображається всім користувачам

Шкідливий скрипт виконується через маніпуляцію DOM об'єктами:

-- JavaScript код: document.getElementById('output').innerHTML = userInput; -- Якщо userInput містить

Заходи захисту:

Output Encoding - кодування вихідних даних

Content Security Policy (CSP) - політика безпеки контенту

Input Validation - валідація вхідних даних

HTTP-only Cookies - захист cookies від JavaScript

X-XSS-Protection - заголовок захисту браузера

-- URL: https://example.com/search?q= -- Сервер повертає: Результати пошуку для 

🔄 Cross-Site Request Forgery (CSRF)

Що таке CSRF?

CSRF — це атака, при якій зловмисник змушує авторизованого користувача виконати небажані дії на веб-сайті, де користувач аутентифікований.

Приклад атаки:

Заходи захисту:

CSRF Tokens - унікальні токени для кожного запиту

SameSite Cookies - обмеження відправки cookies

Referer Validation - перевірка заголовка Referer

Double Submit Cookies - подвійна відправка токенів

<!-- Зловмисний сайт --> <img src="https://bank.com/transfer?to=hacker&amount=1000" /> <!-- Якщо користувач залогінений в банку, переказ виконається автоматично -->
жива демонстрація · пов'язана симуляція● LIVE

🔐 Безпечна аутентифікація та авторизація

Аутентифікація (Authentication)

Процес перевірки особистості користувача:

Методи аутентифікації:

Паролі - традиційний метод

Двофакторна аутентифікація (2FA) - додатковий фактор

Біометрична аутентифікація - відбитки, обличчя

Аппаратні токени - YubiKey, TOTP

OAuth/SAML - федеративна аутентифікація

Безпечне зберігання паролів:

Хешування - bcrypt, Argon2, scrypt

Сіль (Salt) - випадкові дані для унікальності

Пепер (Pepper) - додаткова сіль

Ітерації - багаторазове хешування

Авторизація (Authorization)

Процес визначення, що може робити авторизований користувач:

Моделі авторизації:

RBAC (Role-Based Access Control) - на основі ролей

ABAC (Attribute-Based Access Control) - на основі атрибутів

MAC (Mandatory Access Control) - обов'язковий контроль

DAC (Discretionary Access Control) - дискреційний контроль

✅ Валідація та санітизація даних

Валідація вхідних даних

Перевірка даних на відповідність очікуваному формату та діапазону значень:

Типи валідації:

Синтаксична валідація - формат даних

Семантична валідація - логічна коректність

Валідація на сервері - обов'язкова перевірка

Валідація на клієнті - покращення UX

Приклади валідації:

Санітизація даних

Очищення даних від потенційно шкідливих елементів:

Методи санітизації:

HTML Encoding - кодування HTML символів

URL Encoding - кодування URL параметрів

JavaScript Encoding - кодування для JS контексту

SQL Escaping - екранування SQL символів

// Email валідація function validateEmail(email) { const re = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; return re.test(email); } // SQL injection захист function sanitizeInput(input) { return input.replace(/['"\\]/g, ''); }

🛡️ Безпечне програмування

Принципи безпечного програмування

1. Defense in Depth

Множинні рівні захисту на всіх етапах обробки даних.

2. Fail Secure

Система повинна переходити в безпечний стан при збоях.

3. Least Privilege

Надання мінімально необхідних прав доступу.

4. Separation of Duties

Розділення критичних функцій між різними особами.

5. Economy of Mechanism

Використання найпростіших рішень, які забезпечують безпеку.

Безпечні паттерни програмування

1. Input Validation Pattern

2. Secure Communication Pattern

// Використання HTTPS та безпечних заголовків app.use(helmet()); // Безпечні HTTP заголовки app.use(express.json({ limit: '10mb' })); // Обмеження розміру app.use(rateLimit({ windowMs: 15 * 60 * 1000, max: 100 })); // Rate limiting

// Валідація на всіх рівнях function processUserInput(input) { // 1. Валідація формату if (!isValidFormat(input)) { throw new Error('Invalid format'); } // 2. Санітизація const sanitized = sanitizeInput(input); // 3. Бізнес-логіка валідація if (!isBusinessValid(sanitized)) { throw new Error('Business rule violation'); } return sanitized; }

🔍 Тестування безпеки веб-додатків

Типи тестування

1. Статичне тестування (SAST)

Аналіз коду без виконання програми:

SonarQube - аналіз якості коду

Checkmarx - аналіз безпеки

Veracode - платформа безпеки

CodeQL - аналіз від GitHub

2. Динамічне тестування (DAST)

Тестування працюючого додатку:

OWASP ZAP - безкоштовний інструмент

Burp Suite - професійний інструмент

Nessus - сканер вразливостей

Acunetix - веб-сканер безпеки

3. Інтерактивне тестування (IAST)

Моніторинг додатку під час виконання:

Contrast Security - IAST платформа

Hdiv - runtime захист

Synopsys Seeker - IAST рішення

Методологія тестування

1. OWASP Testing Guide

Стандартизована методологія тестування веб-додатків.

2. PTES (Penetration Testing Execution Standard)

Стандарт виконання тестування на проникнення.

3. NIST SP 800-115

Рекомендації з тестування інформаційних систем.

🔧 Інструменти безпеки веб-додатків

Інструменти розробки

ESLint Security Plugin - аналіз JS коду

Bandit - аналіз Python коду

SpotBugs - аналіз Java коду

SonarQube - комплексний аналіз

Інструменти тестування

OWASP ZAP - безкоштовний веб-сканер

Burp Suite - професійний інструмент

Nikto - сканер веб-серверів

SQLMap - тестування SQL injection

Інструменти моніторингу

ModSecurity - WAF модуль

Fail2Ban - захист від brute force

OSSEC - HIDS

Wazuh - SIEM рішення

📊 Метрики безпеки веб-додатків

Ключові показники

Кількість вразливостей - загальна кількість знайдених проблем

Критичність вразливостей - розподіл за рівнем критичності

Час виправлення - середній час на виправлення

Покриття тестами - відсоток коду, покритого тестами

Security Score - загальна оцінка безпеки

Метрики процесу

Security Training - кількість навчання персоналу

Code Reviews - відсоток коду, що пройшов рев'ю

Security Tests - кількість тестів безпеки

Incident Response - час реагування на інциденти

🎓 Висновок

Безпека веб-додатків є критично важливою складовою сучасної кібербезпеки. OWASP Top 10 надає чіткий перелік найкритичніших вразливостей, які повинні бути пріоритетними для усіх розробників та тестувальників.

Ефективний захист веб-додатків вимагає комплексного підходу, що включає безпечне програмування, регулярне тестування, моніторинг та швидке реагування на загрози. Важливо інтегрувати безпеку в процес розробки з самого початку.

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

Майбутнє безпеки веб-додатків пов'язане з розвитком штучного інтелекту, нових протоколів безпеки та адаптацією до постквантової ери. Важливо бути готовими до цих змін та інвестувати в сучасні рішення.

Спробуйте наживо

Усе, що вище, працює прямо у вашому браузері — відкрийте Network Packet Routing і змінюйте параметри під час роботи. Нічого не встановлюється, нічого не завантажується на сервер, уся модель живе в одній вкладці.

▶ Відкрити симуляцію Network Packet Routing

Що ви знайшли?

Додати кроки відтворення (опційно)