Назад | Перейти на главную страницу

Как лучше всего определить, безопасен ли входящий запрос?

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

Вот что у нас есть (непроверено):

when HTTP_REQUEST_SEND {
   clientside {
      if {[TCP::local_port] == 443} {
         HTTP::header replace HTTP_X_FORWARDED_PROTO "https"
      }
      else {
         HTTP::header replace HTTP_X_FORWARDED_PROTO "http"
      }
   }
}

Как видите, мы используем if {[TCP::local_port] == 443} { ... } для обнаружения SSL, но это кажется неуклюжим с портом, жестко закодированным в правиле. Есть ли способ лучше?

Возможно осмотр: SSL::mode, HTTP:uri, или что-то другое?

Вы хотите определить, использует ли соединение клиентский профиль SSL. Страница DevCentral для ПРОФИЛЬ :: существует показывает, как это сделать:

when CLIENT_ACCEPTED {
   if { [PROFILE::exists clientssl] == 1} {
      log local0. "client SSL profile enabled on virtual server"
   }
}

Оливер