Kraken
  • 🐙Привет!
    • 👋Добро пожаловать!
  • ✏️Крупицы знаний
    • 🌚Общие статьи
      • Как установить Kali Linux
      • Как поставить виртуальную Kali Linux
      • Что такое CVE
      • Обзор популярных алгоритмов хеширования
      • Модель OSI
      • Какие есть алгоритмы шифрования
      • Что такое TCP/IP
      • HSTS
      • Что такое хеширование и как его используют в ИБ
      • Скрипт для проверки данных SSL-сертификата
      • Шифруем файлы на Kali Linux с помощью OpenSSL
      • Как работает WPA2
      • О протоколе FTP
      • Что такое CVSS
      • Что такое политика одного источника (SOP)
      • О Cross-Origin Resource Sharing (CORS)
      • О Content Security Policy (CSP)
      • Что такое Bash
      • Веб-сокеты
      • MITRE ATT&CK
      • Начало в OSINT
      • Особенности и подходы к тестированию мобильных приложений
      • Что такое REST
      • Что такое API
      • Сравнение безопасности среды iOS и Android
      • CSS в ИБ
    • 🎪Карьера
      • Какие бывают роли у пентестеров и в чем их смысл
      • Какие есть виды пентеста
      • Что входит в пентест
      • Какие есть области знаний в веб-пентесте
      • Главные ошибки новичков в ИБ
    • 😰Уязвимости
      • Об атаке Pastejaking
      • Об уязвимости KRACK
      • Об уязвимости Regex DoS
      • Об атаке MITM
      • Что такое уязвимость нулевого дня
      • Атака на протокол STP
      • Защита протокола STP
      • Clickjacking
      • База при атаке на Wi-Fi
      • Атаки по сторонним каналам
      • DNS ребайндинг
    • ⚙️Инструменты
      • Лучшие сканеры открытых портов и инструменты проверки портов
      • Что такое OWASP ZAP и как он помогает защитить приложения?
      • О фреймворке WiFi Exploitation Framework (WEF)
      • WeBaCoo — поддерживаем доступ к взломанному веб-серверу
      • Socialscan — проверяем использование электронной почты и имен пользователей в соцсетях
      • Обзор инструментов Red Team
      • 11 инструментов для сканирования уязвимостей
      • Подборка инструментов для автоматизации атак на JWT
      • О Bulk_Extractor
      • О Unicornscan
      • О Maryam
      • О Picocrypt, утилите для шифрования данных
      • Анализируем трафик с ZUI (Zed User Interface)
      • Об инструменте SkipFish
      • Как получить уведомления на почту о входе по SSH
      • О сканере OpenSCAP
      • О Censys — инструменте для поиска уязвимых поддоменов
      • О Scanless — инструменте для анонимного сканирования открытых портов
      • О SearchSploit — инструменте для поиска эксплойтов
      • Выбираем менеджер паролей
      • О Maltego
      • Устанавливаем и используем Snyk CLI в Windows
      • Проверяем безопасность Docker-образов с помощью Trivy
      • Об инструменте SpiderFoot
      • Сканируем сети с помощью скриптов Bash
      • О фреймворке Volatility на Windows
      • Определяем тип WAF с помощью WafW00f
      • Об инструменте ReNgine
      • О Foremost — инструменте для восстановления данных
      • Chisel — инструмент для проброса портов
      • O Yersinia
      • Об Acunetix
      • O Netcat
      • O Samba
      • O John the Ripper
      • О Common User Passwords Profiler (CUPP)
      • О RainbowCrack
      • Shodan
      • MobSF
      • Netsparker
      • Fortify
      • Veracode
      • Rapid7 InsightVM
      • Aircrack-ng
  • 🛠️ИНСТРУМЕНТЫ
    • ⌨️Беспроводные атаки
      • Aircrack-Ng
    • 🔑Атаки на пароли
      • Crunch
      • John
      • CUPP
      • Hashcat
      • Hydra
    • 👁️Сбор Информации
      • Masscan
      • Dnsenum
      • Parsero
      • Nmap
  • 👨‍💻Пентест
    • Методология
    • 🖥️Аппаратный/Физический доступ
      • Физические атаки
      • Побег из КИОСКа
  • 👾MITRE
    • 🗺️Тактики
      • 🏢Предприятия
        • Разведка
      • 📱Мобильные устройства
      • 🏭ICS
    • 💀CTI
      • ☠️Группы
        • admin@338
        • Ajax Security Team
        • ALLANITE
        • Andariel
  • 📟Справочник по безопасной разработке
    • 👨‍🔬CLIENT SIDE
      • Cross-Site Scripting [XSS]
      • Cross-Site Request Forgery [CSRF]
      • Clickjacking
      • Open Redirects
    • 🖥️SERVER SIDE
      • SQL Injections [SQLi]
      • XML External Entity Injection [XXE]
      • OS Command Injection [Command Execution]
      • File Upload
      • Server-Side Request Forgery [SSRF]
      • Host Header Injection
      • Аутентификация
      • Directory Traversal
      • Template Injection [SSTI]
    • API
  • 🐝OWASP
    • Cross Site Scripting (XSS)
Powered by GitBook
On this page
  • Что такое Content Security Policy
  • Как работает CSP
  • Что позволяет применение CSP
  • Пример HTTP-заголовка CSP:
  1. Крупицы знаний
  2. Общие статьи

О Content Security Policy (CSP)

В этой статье о важном стандарте, который помогает избегать множество атак. Расскажем, как работает CSP, какие есть распространенные директивы и разберем пример HTTP-заголовка CSP.

Что такое Content Security Policy

Cистема безопасности, которая помогает предотвратить различного рода атаки в веб-приложениях: XSS, кликджекинг и другие векторы инъекции кода. Её разработали с целью предотвратить подмену контента за счёт ограничений для ресурсов. По сути это как правила безопасности для веб-сайта или набор инструкций, которые говорят браузеру: — Какие части веб-сайта безопасны, — Можно ли доверять различным элементам: скрипты, стили, картинки и т.д. Если на нашем сайте должны выполняться только определенные скрипты, CSP не позволит загрузить скрипты из непроверенных источников. То же самое относится к остальным элементам. Если что-то пытается загрузиться с места, не указанного в правилах CSP → браузер всё заблокирует.

CSP реализована как HTTP-заголовок, отправляемый сервером при ответе на запрос браузера. В рамках этого заголовка и указываются правила.

Как работает CSP

1. Разработчик определяет политику безопасности, выбирая подходящие для веб-сайта директивы. Директивы CSP — инструкции, определяющие какие ресурсы разрешены. Их достаточно много, поэтому мы приведет в таблице ниже самые распространенные.

Директива
Значение

default-src

Устанавливает политику по умолчанию для загрузки ресурсов.

script-src

Определяет допустимые источники для JavaScript.

style-src

Указывает разрешенные источники для таблиц стилей (CSS).

img-src

Ограничивает, откуда можно загружать изображения.

connect-src

Ограничивает URLs, к которым веб-приложения могут подключаться через такие API, как XMLHttpRequest, WebSocket и Fetch.

font-src

Устанавливает источники, разрешенные для загрузки шрифтов.

2. Когда пользователь открывает веб-страницу, веб-сервер отправляет HTTP-ответ браузеру, который включает в себя HTTP-заголовок CSP с установленными правилами.

3. Браузер получает правила и использует их в качестве руководства при обработке загрузки и исполнения контента страницы. Каждый раз, когда страница пытается загрузить ресурс, браузер проверяет, разрешен ли этот ресурс CSP. Если ресурс не соответствует установленным правилам → блок.

4. CSP можно настроить на отправку отчетов, если в процессе обнаруживается попытка загрузить заблокированный контент. Это помогает анализировать и предотвращать потенциальные атаки.

Что позволяет применение CSP

  • Ограничить источники скриптов и стилей → это обеспечивает защиту от XSS атак.

  • Запретить встраивание страницы в фреймы → это защищает от кликджекинга.

  • Определить политику для работы с мультимедийными данными, шрифтами и другими ресурсами.

  • Указать политику директив на случай несоответствия (например, 'default-src' действует, когда явно не указаны другие источники для отдельных типов ресурсов).

Пример HTTP-заголовка CSP:

Content-Security-Policy: default-src 'self'; img-src 'self' example.com; script-src 'self' apis.example.com;

В примере:

  • default-src 'self' → все ресурсы должны быть загружены с того же домена, с которого загружена страница.

  • img-src 'self' example.com → позволяет загружать изображения с того же домена и с example.com.

  • script-src 'self' apis.example.com → разрешает выполнение скриптов с домена-источника и с apis.example.com.

Last updated 1 year ago

✏️
🌚