В настоящее время я работаю над проектом, который требует высокий уровень безопасности . Из-за некоторых недавних изменений требований мы добавили несколько специальных заголовков к каждому запросу, используя интерфейсный http-перехватчик (в противном случае это могло бы стать изменением c в интерфейсных модулях), и они очень важны для системы.
Недавно мы заметили, что эти заголовки могут быть изменены с помощью некоторых плагинов браузера, что является критической проблемой. Поэтому мне нужен способ определить, содержат ли эти заголовки исходные значения, добавленные из моего внешнего интерфейса, и они не изменены.
Экспозиция этих значений заголовка не представляет большой проблемы. Но модификация.
.
.
Мое решение:
1) Генерация пары ключей RSA каждый Модуль времени инициализирует и отправляет ключ publi c в бэкэнд-сервис с уникальным идентификатором для этой вкладки.
2) Сохраните закрытый ключ в сервисе в моем интерфейсе и создайте publi c функция для генерации подписи для данного ввода.
3) Каждый раз, когда вызывается интерфейсный перехватчик, он вычисляет значение подписи на основе соответствующих значений заголовка и добавляет его в качестве другого значения заголовка.
4) Когда каждый запрос попадает на шлюз API, он проверяет подпись, используя ключ publi c, сохраненный на этапе инициализации приложения.
.
Существуют ли угрозы безопасности для мое решение выше. Если есть лучший способ решения вышеуказанной проблемы, предложения горячо приветствуются:)