Авторка: Kateryna Ivanenko, Brand Manager (Invicti & Acunetix) в CoreWin
В статье предоставлена «шпаргалка» по безопасности веб-сайтов – компактное и практическое руководство, охватывающее основные лучшие практики для защищенности веб-приложений.
1. Безопасность сервера и хостинга
- Применение HTTPS для всех страниц; рекомендуется также включать HSTS (HTTP Strict Transport Security).
- Обновление операционной системы и программного обеспечения сервера.
- Ограничение доступа с помощью брандмауэров, белого списка IP-адресов и аутентификации по ключам SSH.
- Выключение ненужных служб и портов.
2. Аутентификация и контроль доступа
- Применение политик надежных паролей.
- Внедрение многофакторной аутентификации.
- OAuth 2.0 и OpenID Connect обеспечивают безопасную стороннюю аутентификацию при условии правильной проверки токенов и защиты механизмов переадресации.
- Ограничение количества попыток входа и блокировка учетной записи помогают защититься от brute-force атак.
- Установка тайм-аутов сессий и использование безопасных параметров cookie (HttpOnly, Secure, SameSite=Lax или Strict) для предотвращения кражи или злоупотребления.
3. Предотвращение распространенных атак
- Очистка всех входящих данных пользователя.
- Экранирование или кодирование исходных данных на основе их контекста (HTML, JavaScript, CSS, URL и т.д.) для предотвращения уязвимостей инъекций.
- XSS (межсайтовый скриптинг): кодирование исходных данных с учетом контекста и применение заголовков политики безопасности содержимого (CSP, Content Security Policy).
- SQL-инъекция: использование параметризированных запросов и безопасных фреймворков ORM.
- CSRF (межсайтовая подделка запроса): применение анти-CSRF токенов и установка атрибутов cookie SameSite (Lax или Strict).
- Обход каталога: проверка путей (paths) к файлам, ограничение безопасными каталогами и избегание прямого использования путей, предоставленных пользователем.
- Инъекция команд: никогда не передавать входящие данные пользователя непосредственно системным командам.
4. Безопасная обработка файлов
- Проверка типов файлов и MIME (медиа).
- Использование рандомизированных и очищенных названий файлов.
- Сохранение загруженных файлов вне доступного веб-каталога для предотвращения прямого доступа.
- Установка строгих разрешений на доступ к файлам (например, 0644) и отключение разрешений на выполнение загруженных файлов.
- Ограничение размера файла.
5. Безопасные конфигурации и секреты
- Избегать жесткого кодирования ключей API, паролей или учетных данных в исходном коде для предотвращения их раскрытия.
- Использование безопасного хранилища секретов.
- Удаление дебаг кода и подробных сообщений об ошибках в продакшне.
6. Заголовки (хедеры) и безопасность содержимого
- Установка надежных заголовков безопасности:
Content-Security-Policy
Strict-Transport-Security
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
Referrer-Policy: no-referrer
- Выключение ненужных функций браузера с помощью Permissions-Policy.
7. Мониторинг и логирование
- Ведение журнала попыток входа, изменений и ошибок, но без логирования конфиденциальных данных.
- Использование WAF (брандмауэров веб-приложений).
- Мониторинг изменений файлов, аномалий трафика и попыток вторжения.
8. Тестирование безопасности и исправление
- Регулярное тестирование безопасности с помощью инструментов DAST, таких как Invicti (ранее Netsparker) и решений SAST, как Mend.io. Если вы хотите бесплатно протестировать эти решения, вы можете связаться с нами удобным для вас способом.
- Использование инструментов проверки зависимостей, таких как Mend.io.
- Своевременное применение исправлений.
9. Безопасный жизненный цикл разработки ПО (SDLC)
- Учет безопасности на ранних этапах.
- Внедрение рекомендаций по безопасному написанию кода.
- Создание конвейеров DevSecOps с автоматизированным сканированием безопасности.
Таким образом, команды могут улучшить уровень безопасности веб-сайтов компании и обеспечить их устойчивость в современном ландшафте угроз.







