Spec-Zone.ru › Werkzeug 2.3

Исправление прокси 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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API