Фиксация прокси 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 – Приложение WSGI, которое нужно обернуть.
-
x_for – Количество значений, которым нужно доверять для
X-Forwarded-For. -
x_proto – Количество значений, которым нужно доверять для
X-Forwarded-Proto. -
x_host – Количество значений, которым нужно доверять для
X-Forwarded-Host. -
x_port – Количество значений, которым нужно доверять для
X-Forwarded-Port. -
x_prefix – Количество значений, которым нужно доверять для
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: Все заголовки поддерживают несколько значений. Аргумент
num_proxiesустарел. Каждый заголовок настраивается с отдельным количеством доверенных прокси.Изменено в версии 0.15: Исходные значения WSGI окружения хранятся в словаре
werkzeug.proxy_fix.orig.orig_remote_addr,orig_wsgi_url_scheme, иorig_http_hostустарели и будут удалены в версии 1.0.Изменено в версии 0.15: Поддержка
X-Forwarded-PortиX-Forwarded-Prefix.Изменено в версии 0.15:
X-Forwarded-HostиX-Forwarded-PortизменяютSERVER_NAMEиSERVER_PORT. -
© 2007–2020 Pallets
Licensed under the BSD 3-clause License.
https://werkzeug.palletsprojects.com/en/1.0.x/middleware/proxy_fix/