17 вопросов
Список наиболее критичных уязвимостей веб-приложений: инъекции (SQL, NoSQL, команды), сломанная аутентификация, XSS, небезопасная десериализация, уязвимые компоненты, неверная конфигурация и др. Ориентир для проверки и защиты.
Использовать подготовленные запросы (prepared statements) с параметрами; никогда не подставлять пользовательский ввод в строку SQL. ORM и query builder с параметризацией. Валидация и санитизация ввода. Минимальные привилегии БД.
Cross-Site Scripting - внедрение скрипта в страницу. Защита: экранирование вывода (htmlspecialchars в PHP), Content-Security-Policy, HttpOnly cookies, валидация ввода. Разделение данных и кода.
Cross-Site Request Forgery - запрос от имени пользователя с другого сайта. Защита: CSRF-токен в формах и проверка на сервере; SameSite cookie; проверка Origin/Referer. Токен привязан к сессии.
Атакующий задает жертве известный session id (через ссылку и т.д.). После входа жертвы атакующий использует тот же id. Защита: регенерация session id после логина (session_regenerate_id); не принимать id из URL.
Заголовок CSP ограничивает источники скриптов, стилей, изображений и т.д. Уменьшает риск XSS и внедрения контента. Директивы default-src, script-src, style-src. Отчеты о нарушениях (report-uri).
HTTP Strict Transport Security - заголовок предписывает браузеру обращаться по HTTPS. Защита от downgrade и перехвата. max-age и includeSubDomains. Предзагрузка (HSTS preload list).
Наложение невидимого iframe с кнопкой поверх страницы; пользователь кликает по "чужой" кнопке. Защита: X-Frame-Options (DENY или SAMEORIGIN); CSP frame-ancestors.
Хеширование стойкой функцией: password_hash (bcrypt/argon2), не MD5/SHA без соли. password_verify для проверки. Соль автоматически в PASSWORD_DEFAULT. Высокий cost для bcrypt.
HTTPS; стойкое хеширование паролей; защита от брутфорса (rate limit, блокировка); безопасное хранение сессии (HttpOnly, Secure cookie); регенерация id после логина; 2FA для критичных операций.
Role-Based Access Control - доступ по ролям. Пользователю назначаются роли, ролям - права. Проверка: "имеет ли роль X право Y". Реализации: в приложении, в БД, в LDAP. Альтернатива: ABAC (по атрибутам).
Двухфакторная аутентификация: пароль плюс второй фактор (TOTP, SMS, ключ). Защита при утечке пароля. Реализация: TOTP (Google Authenticator), библиотеки для генерации и проверки кода.
Шифрование данных - преобразование в нечитаемый вид с ключом. Симметричное (AES) для хранения данных; асимметричное (RSA) для обмена ключами. Применять для чувствительных данных в БД и при передаче. Управление ключами (KMS) критично.
HttpOnly - недоступен из JS (защита от XSS). Secure - только по HTTPS. SameSite=Strict или Lax - защита от CSRF. Ограничение по домену и пути. Для сессий - минимальный срок жизни.
Аутентификация (токены, API key); HTTPS; rate limiting; валидация ввода; авторизация по ресурсам; логирование и мониторинг; не раскрывать лишние данные в ошибках.
Ограничение частоты запросов по IP/пользователю для защиты от брутфорса, DDoS, злоупотребления. Реализация: счетчики в Redis, заголовки X-RateLimit-*. Ответ 429 при превышении.
Не хранить в коде и репозитории. Переменные окружения, секреты в CI/CD, vault (HashiCorp Vault, AWS Secrets Manager). Ротация ключей. Минимальные привилегии. Разные секреты для сред.