Bitdefender Encrypted Web Scan блокирует вызовы API одного и того же сайта

Bitdefender Encrypted Web Scan блокирует вызовы API одного и того же сайта

У меня простая безопасная настройка на одном сайте и в разных источниках:

Внешний интерфейс:https://www.example.com API-интерфейс:https://api.example.com

На обоих доменах мы используем SSL-сертификаты, выданные Amazon (AWS ACM)

У некоторых наших клиентов установлен Bit Defender Total Security, который блокирует вызовы API к нашему собственному API, даже простые GETвызовы, не требующие сложного обмена учетными данными/cookie-файлами.

Я обнаружил, что Bitdefender удаляет access-control-allow-originзаголовок в самом запросе XHR; OPTIONSвызов API по-прежнему имеет правильный заголовок.

Когда я отключаю функцию "Защита Интернет-угроз от Интернет-предотвращения > Зашифрованное веб-сканирование"в Bitdefender и перезапустите Chrome, он работает как и ожидалось, и GETвызов API возвращается правильноaccess-controll-allow-origin=https://www.example.com

Проблема также не возникает, если API находится в том же домене, например https://www.example.com/api, , что говорит о том, что это также поведение Bitdefender, связанное с CORS.

Прочитав описание этой функции, я подумал, что, возможно, Bitdefender не нравятся наши сертификаты, и я заменил наши сертификаты AWS на сертификаты LetsEncrypt; даже не подстановочный сертификат; проблема все та же.

Я также заметил, что Bitdefender заменяет наш сертификат своим собственным локальным сертификатом, выступая в роли посредника, вероятно, для сканирования запросов, как я полагаю.

Чего я не понимаю, так это того, что, например,www.imdb.comимеет похожую установку с ихapi.graphql.imdb.comи они также используют сертификаты AWS.

Но по каким-то причинам их сертификаты не заменяются, а заголовок access-controll-allow-origin не удаляется в запросах API.

Единственное различие, которое я смог заметить между нами и IMDB, заключается в том, что они используютТЛС 1.3в своих запросах и мы используемТЛС 1.2(через шлюз AWS API)

Онлайн-помощь, которую я нашел на данный момент, предлагает только попросить клиента отключить эту функцию в Bitdefender на их сайте, что мне трудно принять, если такая настройка работает для IMDB (ну, может быть, они внесены в белый список Bitdefender).

Я также сообщил об этом в Bitdefender как о «ложном срабатывании» идентификации потока, но ответа не получил.

Есть ли еще идеи, что мне можно поискать?

решение1

Команда Bitdefender была очень полезна. Оказалось, что когда Bitdefender активен, он понижается доhttp/1.1протокол. Наш сервер не вернул заголовок "Access-Control-Allow-Origin" для http/1, а только для http/2. Я мог бы легко отладить это даже без Bitdefender, используя curl с --http1.1активным флагом или запустив Chrome с --disable-http2. Мы используемAWS API-шлюзв нашей настройке и после некоторого гугления я обнаружил, что AWS анализирует заголовки запроса немного по-другому для http/1.

заголовки.Оrigin против заголовков.опроисхождение

Мы используем исходное значение для создания правильных заголовков ответа, и поскольку мы ожидали строчные буквы, мы в основном не смогли найти значение. Да, всего одна буква, на что у меня ушло несколько дней. Просто добавив этот резервный вариант, это сработало:

const origin = headers["origin"] || headers ["Origin"]

Спасибо Bitdefender за подсказку!

Связанный контент