Spec-Zone.ru › Werkzeug 2.0

Исправление прокси 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.
Тип возвращаемого значения

None

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.
  • Ключи environ orig_remote_addr, orig_wsgi_url_scheme, и orig_http_host.

Изменено в версии 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-Forwarded-Host и X-Forwarded-Port изменяют SERVER_NAME и SERVER_PORT.

© 2007–2021 Pallets
Licensed under the BSD 3-clause License.
https://werkzeug.palletsprojects.com/en/2.0.x/middleware/proxy_fix/

Spec-Zone.ru

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