Spec-Zone.ru › Werkzeug 1.0

Фиксация прокси 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/

Spec-Zone.ru

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