Исправление прокси X-Forwarded-For
Этот модуль предоставляет middleware, который настраивает WSGI environ на основе X-Forwarded- заголовков, которые могут устанавливать прокси перед приложением.
Когда приложение работает за прокси-сервером, WSGI может воспринимать запрос как исходящий от этого сервера, а не от реального клиента. Прокси устанавливают различные заголовки, чтобы отслеживать, откуда фактически исходит запрос.
Этот middleware следует применять только в том случае, если приложение действительно находится за таким прокси, и его необходимо настроить с указанием количества прокси, которые подключены перед ним. Не все прокси устанавливают все заголовки. Поскольку входящие заголовки могут быть поддельными, вы должны указать, сколько прокси устанавливают каждый заголовок, чтобы middleware знал, чему доверять.
-
class werkzeug.middleware.proxy_fix.ProxyFix(app, num_proxies=None, 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 – 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. -
num_proxies – Устарело, используйте
x_forвместо этого.
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)
Изменено в версии 0.15: Все заголовки поддерживают несколько значений. Аргумент
num_proxiesустарел. Каждый заголовок настраивается с отдельным количеством доверенных прокси.Изменено в версии 0.15: Исходные значения WSGI environ хранятся в словаре
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-Fowarded-HostиX-Forwarded-PortизменяютSERVER_NAMEиSERVER_PORT. -
© 2007–2020 Pallets
Licensed under the BSD 3-clause License.
https://werkzeug.palletsprojects.com/en/0.16.x/middleware/proxy_fix/