$ssl_early_data

Переменная $ssl_early_data указывает, были ли получены ранние данные в SSL/TLS-соединении.

Описание

В NGINX переменная $ssl_early_data используется, когда сервер настроен на поддержку TLS 1.3, который предусматривает функцию, известную как "0-RTT" или ранние данные. Эта функция позволяет клиентам отправлять данные до полного завершения TLS-рукопожатия, что ускоряет обмен, но влечёт за собой определённые соображения по безопасности. Когда ранние данные получены, значение $ssl_early_data устанавливается в "1"; в противном случае оно устанавливается в "0".

Эта переменная особенно полезна для определения того, как обрабатывать запросы, которые могли быть отправлены с использованием ранних данных. Например, опора на ранние данные может привести к рискам, таким как атаки повторного воспроизведения, поэтому пользователи должны реализовать необходимую логику для защиты от таких уязвимостей. NGINX может использовать значение этой переменной в условных конфигурациях, чтобы применять разные ограничения или ответы в зависимости от того, использовались ли ранние данные при запросе.

Пример конфига

server {
    listen 443 ssl;
    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    location / {
        # Check if early data was received
        if ($ssl_early_data) {
            return 400;  # Reject early data requests if needed
        }
        # Normal processing for regular requests
        proxy_pass http://backend;
    }
}

Использование $ssl_early_data без включения поддержки TLS 1.3 всегда будет возвращать 0 (no early data).

Предположение, что обработка early data безопасна без внедрения надлежащих мер безопасности, может привести к уязвимостям.

← Ко всем переменным