Исправление прокси X-Forwarded-For
Этот модуль предоставляет middleware, который корректирует WSGI окружение на основе заголовков X-Forwarded-, которые могут устанавливать прокси перед приложением.
Когда приложение работает за прокси-сервером, WSGI может воспринимать запрос как исходящий от этого сервера, а не от реального клиента. Прокси устанавливают различные заголовки для отслеживания того, откуда фактически пришёл запрос.
Этот middleware следует использовать только в том случае, если приложение действительно находится за таким прокси, и его необходимо настроить с указанием количества прокси, соединённых перед ним. Не все прокси устанавливают все заголовки. Поскольку входящие заголовки могут быть сфальсифицированы, необходимо указать, сколько прокси устанавливают каждый заголовок, чтобы middleware знал, чему доверять.
-
class werkzeug.middleware.proxy_fix.ProxyFix(app, x_for=1, x_proto=1, x_host=0, x_port=0, x_prefix=0) -
Корректирует WSGI окружение на основе заголовков
X-Forwarded-, которые могут устанавливать прокси перед приложением.-
X-Forwarded-ForустанавливаетREMOTE_ADDR. -
X-Forwarded-Protoустанавливаетwsgi.url_scheme. -
X-Forwarded-HostустанавливаетHTTP_HOST,SERVER_NAME, иSERVER_PORT. -
X-Forwarded-PortустанавливаетHTTP_HOSTиSERVER_PORT. -
X-Forwarded-PrefixустанавливаетSCRIPT_NAME.
Необходимо указать middleware, сколько прокси устанавливают каждый заголовок, чтобы он знал, какие значения следует доверять. Это вопрос безопасности – доверять значениям, полученным от клиента, а не от прокси.
Исходные значения заголовков хранятся в WSGI окружении как
werkzeug.proxy_fix.orig, словарь.- Параметры:
-
- app (WSGIApplication) – WSGI приложение, которое нужно обернуть.
-
x_for (int) – Количество значений для доверия в
X-Forwarded-For. -
x_proto (int) – Количество значений для доверия в
X-Forwarded-Proto. -
x_host (int) – Количество значений для доверия в
X-Forwarded-Host. -
x_port (int) – Количество значений для доверия в
X-Forwarded-Port. -
x_prefix (int) – Количество значений для доверия в
X-Forwarded-Prefix.
from werkzeug.middleware.proxy_fix import ProxyFix # App is behind one proxy that sets the -For and -Host headers. app = ProxyFix(app, x_for=1, x_host=1)
Журнал изменений
Изменено в версии 1.0: Аргумент и атрибут
num_proxies; методget_remote_addr; и ключи окруженияorig_remote_addr,orig_wsgi_url_scheme, иorig_http_hostбыли удалены.Изменено в версии 0.15: Все заголовки поддерживают несколько значений. Каждый заголовок настраивается с указанием отдельного количества доверенных прокси.
Изменено в версии 0.15: Оригинальные значения WSGI окружения хранятся в словаре
werkzeug.proxy_fix.orig.Изменено в версии 0.15: Поддержка
X-Forwarded-PortиX-Forwarded-Prefix.Изменено в версии 0.15:
X-Forwarded-HostиX-Forwarded-PortизменяютSERVER_NAMEиSERVER_PORT. -
© 2007–2022 Pallets
Licensed under the BSD 3-clause License.
https://werkzeug.palletsprojects.com/en/2.3.x/middleware/proxy_fix/