Hello! On Sat, Apr 24, 2021 at 10:15:36PM +0300, Gena Makhomed wrote:
> Есть в nginx директива ssl_early_data, но как я > понял из документации, > чтобы ее можно > было безопасно включить - необходимо сделать защиту > от replay attacks. > > В документации предлагается делать ее на бекенде, > с помощью заголовка proxy_set_header Early-Data $ssl_early_data; > > Можно ли настроить сам nginx таким способом, чтобы он нормально > пропускал на бекенд безопасные запросы GET, HEAD, OPTIONS, TRACE > в том случае когда $ssl_early_data установлена в 1 и чтобы > он возвращал > клиенту 425 (Too Early) status code в том случае, если запрос имеет > не безопасный > метод POST, PUT, DELETE, PATCH и $ssl_early_data; равно 1. Настроить можно: set $early $ssl_early_data:$request_method; if ($early ~ ^1:(?!GET$|HEAD$)) { return 425; } Однако в соответствии с RFC 8470 клиенты не имеют права посылать небезопасные запросы с использованием early data[1], так что смысла в такой настройке примерно ноль. Использование переменной $ssl_early_data имеет смысл тогда, когда replay-атаки могут представлять опасность для "безопасных запросов". То есть, скажем, если где-то GET-запросы используются небезопасно и имеют сайд-эффекты (хоте и не должны по спецификации), или же если если replay-атаки могут быть использованы для получения какой-то информации[2]. [1] https://tools.ietf.org/html/rfc8470#section-4 [2] https://tools.ietf.org/html/rfc8470#section-6 -- Maxim Dounin http://mdounin.ru/ _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru