✨
AppSec & Pentest
AppSec
AppSec
  • AppSec Book
  • Intro
  • PII: Персональные данные
  • Поисковые движки
  • Построение модели угроз / анализ угроз
  • Платформы оркестрации, автоматизации пентеста
  • Audit and Compliance
  • Methodologies
    • Security Check Lists
    • Security Cheat Sheets
    • MNA Process
    • DD Process
    • Написание политик
    • Какие-то модные прикладные инструменты
    • Pentest
      • BlackBox vs GreyBox vs WhiteBox
      • Threat Modeling
      • MITRE ATT&CK
      • OSSTMM
      • CVSS
      • CIS Standarts
      • WASC
      • OWASP Testing Guides
      • PCI DSS
      • PTES
      • NIST SP 800-115
      • ISSAF
  • peoples & blogs
    • Intro
    • Companies
    • Mobile
    • People & Gitbooks
    • Podcasts
    • Jobs
  • Базы уязвимостей
    • vulners
    • zero.today
    • Регистрация CVE
  • Pentest IDE
    • Nuclei (Go)
    • jaeles (Go)
    • Pentest Collaboration Framework
    • Lair Framework (Go)
    • Faraday IDE
    • Nucleus
    • Bulwark
    • Написание отчетов
  • Payloads & Wordlists
    • Генерация wordlists
    • Payloads
      • Подборка
      • Directories
      • Passwords
      • Поддомены
      • Пароли по умолчанию
      • usernames & logins
      • Headers
      • RCE
      • XXE
      • XXS
      • JWT Secrets
    • Расширения файлов, которые можно искать
    • Bypass Something
      • bypass dot
      • 40x bypass
  • AppSec / WEB
    • Common
      • Типовая последовательность действий
      • Common Go Tools
      • Guidelines
    • Automated WebApp Pentest
      • Other tools
      • Burp Suite
        • Режимы в Intruder
        • Как заводить крякнутый
        • Plugins
        • Инструменты для Burp
        • Написание расширений
          • Documentation & Examples
          • UI
          • kotlin
            • Basic
            • Examples
          • jpython
            • Пример
        • Papers
        • Tips
    • Server-Side Vulnerabilities
      • Broken Access Control
      • Bruteforce [credentials]
        • About
        • Papers & Books
        • Tools
          • Hydra
          • Medusa
          • Potator
      • Business Logic Vuln
      • CSV-injection
      • DOS
      • DDOS
      • Dependency Confusion Attack
      • Deserialization
        • About
        • JSON
        • Java
        • .Net / ViewState
        • PHP
        • Python
        • Ruby
        • Тестовые стенды
      • Host Header Injection
      • HTTP Smuggling
      • IDOR
      • JSON Hijacking
      • LFI
      • LFR
      • Open Redirect
        • Cases
          • Open Redirect To XSS
        • CheetSheets
      • OS Command Injection
      • Path Traversal
      • Phishing
      • Race Condition
      • Regular Expression
      • Reverse Shell
      • Searching
      • Session Fixation
      • SQLi
        • Description
        • Databases
          • HQL inj
          • DQL inj
          • postgres
          • Yandex ClickHouse
        • Exec Code
        • Tools
          • Как отработает запрос в разных базах
          • sqli exploit
        • Papers
          • SQLi in Node.js
          • Cheat Sheets
      • SSRF
        • Description
        • Tools
        • Papers
      • SSTI/CSTI
      • Subdomain Takeover
        • Description
        • Tools
        • Papers
      • Upload File
        • MIME type bypass & filter evasions
        • Example: Upload File
        • Some Attacks
        • ImageMagick
        • Inject Payloads
          • To Image
          • WebShell
          • In office macros
          • Контейнеры
            • png
          • XXE/XXS -> Office
        • Tools & MindMaps
      • XML/SOAP injection/XXE
        • About
        • Tools
        • Examples XXE
        • Papers
      • Web Cache Deception
      • Web Cache Poising
    • Client-Side Vulnerabilities
      • Vulnerabilities
      • CSRF
      • CRLF
      • XSS
        • Description
        • Attacks
          • Exploiting XSS
          • GTM (and other TMS) XSS
          • Через SVG
          • DOM-based vulnerabilities
            • About
            • DOM-based XSS
            • DOM-based open redirect
            • DOM Clobbering
          • Local File Read via HTML injection in PDF
          • RCE in DOMPDF
          • [висячая разметка] Dangling markup injection
          • String.prototype.replace
          • CSS injection
          • jQuery XSS
          • AngularJS Sandbox Escape
        • Gadgets
        • Tools
        • Cheat Sheets
        • Papers
      • Prototype Pollution Attack
      • Client-Side & Client-Server Communications
        • window.postMessage
        • Server-Sent Event (SSE)
      • Eval-based Injections
      • Serialization
      • Incorrect work with location
      • Clickjacking (UI redressing)
    • Technics
      • OSINT
        • Tools
          • Поиск по сервисам
            • Github
            • Gitlab
            • Slack
            • Google Dorks
            • Facebook / Instagram
            • LinkedIn
          • Swiss Army Knife
            • Bellingcat's Online Investigation Toolkit
            • MS Threat Intelligence Platform
            • foca/goca
            • spiderfoot
            • Shodan
            • BinaryEdge (Shodan alternative)
            • Maltego
            • theharvester
            • PublicWWW
            • Разное / TODO
          • Поиск по логину / имени/компании
          • Get IP or Geo-location
          • Разное
            • База CommonCrawl
            • ТОП сайтов
        • Certificate Transparency
        • Papers
      • Кодировки
      • Web Application Testing with CryptoPro Sign
      • Получить IP спрятанный за CDN (Search Real IP)
    • SSDLC
    • DevSecOps
      • Materials
      • IAST
      • SAST
        • About
        • SAST List
        • Python: Bandit
        • Semgrep
          • Intro
          • Getting Started
          • Writing rules
            • Pattern syntax
            • Rule syntax
          • Rulesets
          • Papers
        • CodeQL
          • Intro
          • Docs & Papers
          • Get Started
          • Usage
          • CodeQL CLI
          • Writing CodeQL queries
            • About
            • CodeQL Packs
            • CodeQL Queries
            • QL Language
              • About
              • Predicates
              • Queries
              • Types
            • Libraries
              • Intro
              • Javascript
            • Basic types
            • Creating alert queries
            • Creating path queries
          • TODO
        • Checkmarx
      • DAST
        • About
        • NetSparker
        • Rapid7
        • Acunetix
        • OWASP ZAP
        • HP WebInspect
        • Burp Enterprise
        • Wallarm FAST
      • RASP
      • API ST
      • OSA/SCA — Open Source Scanners & Dependency Check
    • Browser PWN
    • Вопросы
      • Как хранить пароли?
      • Куки или токены?
      • Сброс пароля через email
      • Про процессы и контроли
      • Application Security Design Antipatterns
    • ЯП
      • JS
        • Search links
        • RCE on Desktop Clients (ex: win)
        • Обход валидаторов
    • Books & Papers
    • Tools
      • Crawling
      • CSP bypass
      • Web Fuzzers
        • Intro
        • Tools
          • Other tools
          • ffuf (Go)
          • wfuzz
      • Subdomain Enum
        • Combines
          • Amass
          • Monitorizer
          • Findomain
          • dnsdumpster
        • Another tools
        • Brute subdomains
        • Sources
        • Mutators
        • Techniques
      • Other tools
      • Scanners
      • Fingerprinting
      • Scrappers
      • CVEs List
  • Technologies
    • WEB
      • Аналитика & Маркетинг
        • Dark
        • Dark SEO
        • Просто список
      • RSS-каналы
        • Клиенты
        • Atom
      • CMIS
        • About
      • HTTP/WEB
        • Рекомендуемые заголовки (Headers)
        • HSTS
        • SameSite
        • Content-Security-Policy (CSP)
        • Same-Origin Policy (SOP)
        • Cross-Origin Resource Sharing (CORS)
        • Типы запросов
        • First Party Sets
        • Subresource Integrity (SRI)
        • HTTP Reverse Proxy
        • Papers & Resources
      • CMS
        • ModX
        • Joomla
        • Drupal
        • WordPress
        • Liferay
      • Админки/CRM
        • Zend Framework
        • Bitrix
        • Salesforce
      • WAF
      • GraphQL
      • Virtual Hosts
      • OAUTH/OpenID/2FA
        • Общие рекомендации для авторизации
        • 2FA
        • OAuth 2.0
          • About
          • Definitions
            • Clients
            • Tokens
            • Scopes
            • Grant Types
            • Redirect URL
            • The Resourse Server
          • Flows
            • Server Side App Authorization Flow
            • Single Page App Auhtorization Flow
            • Mobile and Native Apps Authorization Flow
            • Authorization Flow
            • Access Tokens Flow
              • Authorization Code Request
              • Password Grant
              • Client Credentials
              • Access Token Reponse
              • Access Token Lifetime
              • Refreshing Access Tokens
              • Making Authenticated Requests
            • Listing Authorizations and Revoking Access Flow
            • OAuth for Browserless and Input Constrained Devices
            • PKCE
            • Token Introspection Server Flow
          • Vulnerabilities
            • Common 1
            • Common 2
        • OpenID Connect (OIDC)
          • About
          • Vulnerabilities
          • Papers
        • IndieAuth
        • Разница между OAuth и OpenID
        • JWT
      • Servers
        • Oracle WebLogic
        • Jetty
        • JBoss (WildFly)
        • Nginx
        • Apache
          • .htaccess
          • <server-url>/server-status
          • Apache Tomcat
          • Apache Struts2
          • CVE
        • F5 BIG-IP
    • Покупка SIM-карт и номеров
    • Banks & Payments
      • Definitions
      • Kind of payments
      • 3DS
      • PCI DSS
      • Эквайринг
      • Vulnerabilities
      • Доклады
      • ATM
    • Программы лояльности
    • Digital Rights Management (DRM)
    • ELK — Elasticsearch, Logstash, Kibana
      • About
      • Elasticsearch
      • Logstash
      • Kibana
    • 1C
    • CI/CD
      • Jenkins
      • huskyCI
      • Travis CI
      • CircleCI
      • Общее
    • SCM
      • Gitlab
      • Tools
      • Vulns
    • Honeypots
    • ChatGPT
  • Learning
    • Компетенции
    • Материалы SANS & Offensive Security
    • Просто норм материалы/gitbooks по пентесту вцелом...
    • Platforms & Playground Labs
    • Бумажная ИБ
      • Информация Общая
      • Иерархия (виды) информации
  • Bug Bounty
    • Notes
    • Browser Plugins
    • Cheat Sheets
    • Платформы
    • Specific tools
  • Hardware/IoT
    • Tools
    • Training
    • Papers & Books
Powered by GitBook
On this page
  • CSPv1
  • CSPv2
  • Разные заметки о CSP
  • Примеры директив
  • Другие заметки
  • Papers
  • Tools

Was this helpful?

  1. Technologies
  2. WEB
  3. HTTP/WEB

Content-Security-Policy (CSP)

PreviousSameSiteNextSame-Origin Policy (SOP)

Last updated 1 year ago

Was this helpful?

Директива служит для описания и ограничения, откуда могут забираться ресурсы и кто может отрисовывать ваши ресурсы и забирать ваши ресурсы к себе (например, в iframe).

Есть (объявлен deprecated), сейчас уже и готовится .

CSPv1

С 2010-ого года. Браузеры на тот момент каждый реализовывал эту фичу как экспериментальную, под своими заголовками:

  • Firefox, IE: X-Content-Security-Policy

  • Chrome: X-WebKit-CSP.

CSPv2

Действующий стандарт. Заголовок: Content-Security-Policy.

CSP не предназначен как исключительная защита от разного рода инъекций. Этот механизм позволяет уменьшить ущерб, причиняемый атаками путем внедрения контента. Основная защита – проверять входные данные и кодировать выходные!

Разные заметки о CSP

Сюда входят правила из разряда:

  • скриптам с каких доменов разрешено исполняться на этой странице (script-src);

  • каким доменам разрешено встраивать эту страницу в iframe (frame-ancestors);

  • разрешено ли использование base-тегов (base-uri).

Есть директива default_src — она определяет действия по-умолчанию, все остальные директивы переписывают (или дополняют?) default_src.

Может определяться в заголовке Content-Security-Policy, или в теге meta (не все правила можно сюда записать).

Не настроеный CSP вместе с отстутсвием настройки X-Frame-Options -> получаем Clickjacking.

Примеры директив

Можно загружать только с того же origin:

script-src 'self';

Можно загружать только с определенного домена:

script-src https://scripts.example.com;

Есть при этом нюансы: не стоит доверять CDNs, например: ajax.googleapis.com.

Есть другие механизмы помимо перечисления доменов для создания белых списков источников — nonces и hashes:

  • CSP директива может указать случайное число — nonce — и такое же значение должно быть в теге скрипта. Если значения не совпадут, скрипт не запустится. Чтобы этта мера была эффективна как мера контроля, nonce должен быть случайным, непредсказуемым для атакующего.

Пример:

script-src 'nonce-s0m3-rand0m-valu3';

И в теге инлайн скрипта указываем наш nonce:

<script>
    // этот скрипт не запустится, тк здесь нет атрибута nonce
</script>
<script nonce="wr0ng-valu3">
    // этот скрипт не запустится, тк здесь не правильное значение nonce
</script>
<script nonce="s0m3-rand0m-valu3">
    // этот скрипт отработает
</script>
  • CSP директива может указать hash содержимого скрипта. Если хеш не совпадет, скрипт не запустится.

Другие заметки

Сайты часто настраивают CSP для таких ресурсов как скрипты script, но не блокируют запросы изображений. Таким образом часто можно выполнять запросы на сторонние серверы через тег img. В некоторых случаях это может раскрыть CSRF-токен.

Некоторые браузеры, такие как Chrome, имеют встроенную защиту против атак класса dungling markup, и блокируют запросы, содержащие не ascii-символы, незакодированные переносы строк или кавычки.

report-uri — сообщает о некорректных обращениях в обход CSP

Strict dynamic — паттерн, при котором в CSP добавляется один JS-файл с nonce как разрешенный для выкачки, а он подтягивает все остальные зависимости.

Есть немалое количество обходов CSP, например, через angular. Суть: мы добавляем элемент из разрешенных, и через него подтягиваем нудные файлы, делаем запросы.

Не использовать unsafe-inline — это равносильно отключению CSP.

Trusted types — позволяет ограничить типы поступаемых аргументов в функции, коллбеки и тд (защитить от DOM XSS)

Papers

Tools

Есть ресурс, который проверяет, как настроен CSP у вас:

Здесь можно подробно прочитать:

Сервис проверки безопасности CSP от гугла — .

CSPv1
CSPv2
CSPv3
https://csp-evaluator.withgoogle.com/
https://habr.com/ru/company/nix/blog/271575/
https://csp-evaluator.withgoogle.com