Поиск по сайту
Ctrl + K
Вопросы по Веб-разработке

Как работает блокировка запросов в результате политик безопасности (например, CSP)?

Content Security Policy (CSP) — это механизм безопасности, который позволяет веб-разработчикам контролировать, какие ресурсы может загружать веб-страница. С помощью CSP можно избежать нападений, таких как XSS (Cross-Site Scripting) и инъекции данных, ограничив источники, откуда могут загружаться скрипты, стили и другие ресурсы.

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

CSP работает через HTTP-заголовок Content-Security-Policy, который отправляется от сервера к браузеру. Этот заголовок содержит список директив, указывающих, какие ресурсы разрешены или запрещены для загрузки на страницу.

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

Content-Security-Policy: default-src 'self'; img-src 'self' https://example.com; script-src 'self' 'unsafe-inline'

В этом примере:

  • default-src 'self'; — разрешает загружать ресурсы только с того же источника.
  • img-src 'self' https://example.com; — разрешает изображения как с того же источника, так и с https://example.com.
  • script-src 'self' 'unsafe-inline'; — разрешает скрипты только с того же источника и разрешает встроенные скрипты.

Как блокировка запросов происходит в браузере?

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

Пример кода

Вот пример HTML-документа с включенной CSP:

<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Пример CSP</title>
    <meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src 'self' https://example.com; script-src 'self' 'unsafe-inline'">
</head>
<body>
    <h1>Привет, мир!</h1>
    <img src="image.jpg" alt="Пример изображения">
    <script>
        console.log('Этот скрипт будет выполнен, если он разрешён CSP');
    </script>
</body>
</html>

Если вы попытаетесь загрузить скрипт с другого источника, например, с https://malicious-site.com/script.js, браузер заблокирует этот запрос и вы увидите ошибку в консоли.

Заключение

Использование Content Security Policy (CSP) — это эффективный способ повышения безопасности ваших веб-приложений. Он позволят блокировать нежелательные запросы и ограничивать потенциальные векторы атак. Рекомендуется всегда тестировать свои CSP-настройки в различных браузерах, чтобы убедиться в стабильности и безопасности вашего приложения.