Fiddler, Spoofing Referer не работает должным образом - PullRequest
0 голосов
/ 29 февраля 2020

Я пытаюсь вызвать веб-сервис API с javascript, как показано ниже.


var url = "https://...";

let formData = new FormData();
formData.append("...", "...");
formData.append("...", "...");
formData.append("...", "...");

let promise = fetch(url, {
  method: "POST",
  body: formData
});

promise.then(result => {
    console.log(result);
});

Ответ имеет статус 200 ОК, но в тексте ответа говорится, что вы не имеете права делать action.

При расследовании с почтальоном, почему запрос не удался. Я обнаружил, что добавление Referrer Header со значением, являющимся именем домена сервера api, завершило возвращение правильного ответа. Похоже, что на сервере API включен некоторый уровень безопасности реферера, который не разрешает доступ к API по запросу, исходящему от этого сервера.

Чтобы приступить к разработке и тестированию, я установил fiddler с целью перехватить запрос и изменить заголовок реферера перед тем, как отправить запрос на сервер API.

Версия Fiddler: v4.6.20171.26113.

Операционная система: linux debian

Firefox: версия 60.9.0esr (64-разрядная версия)

API, к которому я пытаюсь получить доступ, использует https, поэтому мне нужно расшифровать трафик c. Поэтому я перешел к Fiddler -> Options -> HTTPS -> action и экспортировал сертификат root на рабочий стол. После этого я добавил сертификат в браузер Firefox (Управление сертификатами -> Полномочия-> Импортировать сертификат, извлеченный из фиддлера). Чем я зашел в Fiddler -> Параметры -> HTTPS -> включить расшифровку трафика HTTPS c. Я также настроил ручную настройку прокси-сервера с firefox на go fiddler (proxy: localhost, порт: 8888).

После выполнения вышеуказанной конфигурации мой доступ к Inte rnet пропал. Я искал и увидел, что это проблема с новой версией TLS 1.3. Я переключил firefox версию TLS на версию TLS 1.2 (security.tls.version.max = 3). После этого доступ к inte rnet был восстановлен.

Я установил точку останова в URL api (bpu url). Я могу успешно перехватить и успешно изменить заголовок Referrer, но когда я запускаю до завершения и проверяю ответ в firefox сети, кажется, что Referer не был изменен. Хотя я перехватил с Fiddler и изменил заголовок. Почему изменения, сделанные мною в Fiddler, не сохраняются после того, как я нажимаю «выполнить до завершения»?

С уважением,

Рандо.

1 Ответ

0 голосов
/ 10 марта 2020

Что решило проблему, для меня это было:

  • Перезагрузка компьютера после установки фиддлера
  • Удаление сертификата, экспортированного из фиддлера
  • Go в меню HTTPS -> ДЕЙСТВИЯ -> Экспорт Root Сертификат на рабочий стол
  • Добавить сертификат в firefox (Управление сертификатами -> Полномочия-> Импортировать сертификат, извлеченный на рабочий стол из фиддлера).
  • Проверьте, установлены ли параметры прокси в firefox, это должно быть вручную и задано (proxy: localhost, порт: 8888), 8888 - это порт fiddler
  • Go в firefox about: config, понизить версию TLS. Конфигурация для понижения tls: security.tls.version.max=3
  • Go до Fiddler Menu HTTPS и проверки расшифровки HTTPS-трафика c

После выполнения описанных выше шагов я смог для успешного перехвата и изменения заголовка и ответов HTTP-запроса.

...