. net web.config как использовать <rewrite><rules> с заголовками запросов в качестве входных? - PullRequest
0 голосов
/ 09 июля 2020

У нас есть лог. c в web.config, который требует внесения IP-адресов в белый список для доступа к нашим веб-сайтам.

Мы хотим разрешить нагрузочное тестирование без внесения IP-адресов в белый список, так как нагрузочный тест будет производиться динамическим c IP. В инструменте нагрузочного тестирования мы можем установить заголовок запроса, например

  loadtester: true

В правилах перезаписи есть «входные» переменные, которые, если посмотреть на примеры, включают:

  1. REMOTE_ADDR
  2. HTTP_X_Forwarded_For
  3. HTTP_HOST
  4. REQUEST_FILENAME
  5. SERVER_PORT
  6. URL
  7. REQUEST_URI
1023 * Но я не могу найти ни одного для заголовков reqeuest. Это где-нибудь задокументировано?

Есть идеи, как бы мне проанализировать заголовки и проверить тот, который я ищу? Мы хотели бы разрешить трафик c с определенным заголовком c, даже если IP-адрес не включен в белый список.

пример извлечения из web.config:

    <rule name="Whitelist sites" stopProcessing="true">
      <match url=".*" />
      <conditions>
        <add input="{REMOTE_ADDR}" pattern="82\.7\.151\.45" negate="true"/>
        <add input="{HTTP_X_Forwarded_For}" pattern="82\.7\.151\.45" negate="true"/>
      </conditions>
      <action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="The requested site is not accessible" />
    </rule>
  </rules>
</rewrite>
</system.webServer>

Обновление: I нашел этот ресурс: https://www.w3schools.com/ASP/coll_servervariables.asp

В нем есть переменная с именем "HTTP_<HeaderName>" Попробую!

1 Ответ

1 голос
/ 09 июля 2020

Вы можете получить доступ к заголовкам, добавив к их имени префикс HEADER_

Untested, но это должно работать: <add input="{HEADER_LOADTESTER}" pattern="true" negate="true"/>

(лично я бы использовал go со случайной строкой для заголовок / значение, если вы используете этот подход для защиты общедоступной службы)

...