Ниже — краткий перечень типовых уязвимостей, примеры эксплойтов и конкретные программные способы защиты. 1) SQL‑инъекция (SQLi) - Суть: форсирование SQL‑запроса через небезопасные входные данные. - Пример полезной нагрузки: ` ' OR '1'='1' -- ` - Это делает условие истинным: 1=11=11=1. - Вред: утечка, изменение или удаление данных, обход авторизации. - Защита (программно): - Использовать подготовленные выражения / параметризованные запросы (prepared statements). - PHP (PDO): code: $stmt = $pdo->prepare("SELECT * FROM users WHERE login = :login"); $stmt->execute([':login' => $login]); - ORM или query builders (например, PDO, SQLAlchemy) вместо конкатенации строк. - Явная валидация/ограничение типов и длины входных данных. - Принцип наименьших прав для DB‑пользователя. - Логи и мониторинг аномалий запросов. 2) XSS (межсайтовый скриптинг) — отражённый, хранимый, DOM‑XSS - Суть: внедрение и выполнение JavaScript в контексте страницы жертвы. - Пример полезной нагрузки (рефлект): `alert('XSS')` - Вред: кража сессионных кук, CSRF, фальсификация интерфейса. - Защита (программно): - Всегда экранировать/кодировать вывод в зависимости от контекста (HTML‑экранирование для текста, атрибутов, URL, JS). - В шаблонизаторах включить авто‑экранирование (например, Twig, Handlebars). - Использовать Content‑Security‑Policy: пример заголовка: - `Content-Security-Policy: default-src 'self'; script-src 'self';` - Для HTML‑входа — санитизация с проверенной библиотекой (DOMPurify). - Помечать куки как HttpOnly (недоступны из JS) и Secure. - Валидация и ограничение пользовательского ввода по длине/формату. 3) CSRF (межсайтовая подделка запроса) - Суть: злоумышленник заставляет браузер аутентифицированного пользователя выполнить нежелательное действие. - Пример эксплойта: внешний сайт содержит форму с автопостом на URL банка; браузер пользователя отправляет куки и действие выполняется. - Защита (программно): - Anti‑CSRF токены: генерировать рандомный токен в сессии и вставлять в скрытое поле формы; проверять при приёме запроса. - Генерация: token = random(); session.csrf = token; вставлять `` - Проверять заголовок Origin/Referer для критичных запросов. - Устанавливать cookies с SameSite=strict или Lax (для чувствительных операций). - Пример: `Set-Cookie: session=...; HttpOnly; Secure; SameSite=Strict` - Для SPA — использовать double submit cookie или заголовки (X‑CSRF‑Token) с проверкой. 4) Другие частые уязвимости (коротко) и защита - Insecure Direct Object References (IDOR): доступ к объектам по предсказуемому идентификатору. - Защита: проверять авторизацию на уровне ресурса, использовать непрогнозируемые ID (UUID), проверять владение. - XXE (XML External Entity): - Защита: отключить внешние сущности в XML парсерах, предпочесть JSON. - RCE / LFI / RFI (включение файлов/выполнение кода): - Защита: запретить загрузку исполняемых файлов, проверять расширения/MIME, хранить загружаемые файлы вне каталога исполняемых скриптов, использовать whitelist. - SSRF: - Защита: запрет внутренних адресов, whitelist хостов, таймауты и ограничение возможностей парсера. - Небезопасная десериализация: - Защита: не десериализовать данные от пользователя, применять подписи/контроль целостности, использовать безопасные форматы (JSON). - Неправильная аутентификация/авторизация: - Защита: многофакторная аутентификация, жесткие политики паролей, защита от brute‑force, куки с HttpOnly/Secure, короткие сессии и ревокация. 5) Общие практики защиты - Принцип наименьших прав, мониторинг и логирование. - Регулярные обновления зависимостей, SCA/DAST/SAST сканирование. - Use secure defaults, security headers (CSP, HSTS, X-Content-Type-Options: nosniff, X-Frame-Options: DENY), TLS. - Безопасное хранение секретов и защита конфигураций. Если нужно — могу привести конкретные код‑примеры защиты в вашем стеке (PHP, Python, Node.js и т.п.).
1) SQL‑инъекция (SQLi)
- Суть: форсирование SQL‑запроса через небезопасные входные данные.
- Пример полезной нагрузки: ` ' OR '1'='1' -- `
- Это делает условие истинным: 1=11=11=1.
- Вред: утечка, изменение или удаление данных, обход авторизации.
- Защита (программно):
- Использовать подготовленные выражения / параметризованные запросы (prepared statements).
- PHP (PDO):
code:
$stmt = $pdo->prepare("SELECT * FROM users WHERE login = :login");
$stmt->execute([':login' => $login]);
- ORM или query builders (например, PDO, SQLAlchemy) вместо конкатенации строк.
- Явная валидация/ограничение типов и длины входных данных.
- Принцип наименьших прав для DB‑пользователя.
- Логи и мониторинг аномалий запросов.
2) XSS (межсайтовый скриптинг) — отражённый, хранимый, DOM‑XSS
- Суть: внедрение и выполнение JavaScript в контексте страницы жертвы.
- Пример полезной нагрузки (рефлект): `alert('XSS')`
- Вред: кража сессионных кук, CSRF, фальсификация интерфейса.
- Защита (программно):
- Всегда экранировать/кодировать вывод в зависимости от контекста (HTML‑экранирование для текста, атрибутов, URL, JS).
- В шаблонизаторах включить авто‑экранирование (например, Twig, Handlebars).
- Использовать Content‑Security‑Policy: пример заголовка:
- `Content-Security-Policy: default-src 'self'; script-src 'self';`
- Для HTML‑входа — санитизация с проверенной библиотекой (DOMPurify).
- Помечать куки как HttpOnly (недоступны из JS) и Secure.
- Валидация и ограничение пользовательского ввода по длине/формату.
3) CSRF (межсайтовая подделка запроса)
- Суть: злоумышленник заставляет браузер аутентифицированного пользователя выполнить нежелательное действие.
- Пример эксплойта: внешний сайт содержит форму с автопостом на URL банка; браузер пользователя отправляет куки и действие выполняется.
- Защита (программно):
- Anti‑CSRF токены: генерировать рандомный токен в сессии и вставлять в скрытое поле формы; проверять при приёме запроса.
- Генерация: token = random(); session.csrf = token; вставлять ``
- Проверять заголовок Origin/Referer для критичных запросов.
- Устанавливать cookies с SameSite=strict или Lax (для чувствительных операций).
- Пример: `Set-Cookie: session=...; HttpOnly; Secure; SameSite=Strict`
- Для SPA — использовать double submit cookie или заголовки (X‑CSRF‑Token) с проверкой.
4) Другие частые уязвимости (коротко) и защита
- Insecure Direct Object References (IDOR): доступ к объектам по предсказуемому идентификатору.
- Защита: проверять авторизацию на уровне ресурса, использовать непрогнозируемые ID (UUID), проверять владение.
- XXE (XML External Entity):
- Защита: отключить внешние сущности в XML парсерах, предпочесть JSON.
- RCE / LFI / RFI (включение файлов/выполнение кода):
- Защита: запретить загрузку исполняемых файлов, проверять расширения/MIME, хранить загружаемые файлы вне каталога исполняемых скриптов, использовать whitelist.
- SSRF:
- Защита: запрет внутренних адресов, whitelist хостов, таймауты и ограничение возможностей парсера.
- Небезопасная десериализация:
- Защита: не десериализовать данные от пользователя, применять подписи/контроль целостности, использовать безопасные форматы (JSON).
- Неправильная аутентификация/авторизация:
- Защита: многофакторная аутентификация, жесткие политики паролей, защита от brute‑force, куки с HttpOnly/Secure, короткие сессии и ревокация.
5) Общие практики защиты
- Принцип наименьших прав, мониторинг и логирование.
- Регулярные обновления зависимостей, SCA/DAST/SAST сканирование.
- Use secure defaults, security headers (CSP, HSTS, X-Content-Type-Options: nosniff, X-Frame-Options: DENY), TLS.
- Безопасное хранение секретов и защита конфигураций.
Если нужно — могу привести конкретные код‑примеры защиты в вашем стеке (PHP, Python, Node.js и т.п.).