Исправление прокси X-Forwarded-For
Этот модуль предоставляет middleware, который настраивает WSGI environ на основе заголовков 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 environ на основе заголовков
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 environ как
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; и ключи environorig_remote_addr,orig_wsgi_url_scheme, иorig_http_hostбыли удалены.Изменено в версии 0.15: Все заголовки поддерживают несколько значений. Каждый заголовок настраивается с отдельным количеством доверенных прокси.
Изменено в версии 0.15: Исходные значения WSGI environ хранятся в словаре
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 Pallets
Licensed under the BSD 3-clause License.
https://werkzeug.palletsprojects.com/en/latest/middleware/proxy_fix/