
Введение в проблему
Недавно я работал над алгоритмом подписи запросов, и выяснилось, что мнения о включении строки запроса в ту часть, которая затем подписывается, «разнятся».
Короче говоря, аргумент человека против включения строки запроса в строку для подписи заключается в том, что строки запроса могут быть изменены (например, значения могут быть изменены, аргументы могут быть удалены/добавлены, порядок может быть изменен).
Также я никогда не сталкивался с таким поведением в прокси или балансировщике нагрузки, хотя я сталкивался с такими вещами, как скрытие Authorization
заголовка (например, Apache/WSGI), изменение метода запроса (балансировщиком нагрузки, вероятно, серверы Amazon делают это). Я знаю, что такое поведение можно включить на обратном прокси или балансировщике нагрузки, используя некоторые пользовательские скрипты/правила, но это можно сделать с помощьюлюбойчасть запроса.
Много работы было сделано на основе предположения, что строка запроса должна быть включена, плюс выглядит глупо не подписывать одну из самых важных частей запроса. Таким образом, мне нужно знать, будет ли включение строки запроса в необработанной форме (как она передается в URL) проблемой в будущем или нет.
Актуальный вопрос
Итак, мой вопрос:
Является ли обычным для любого прокси или балансировщика нагрузки изменение строк запроса? Мне это кажется глупым. Знаете ли вы какой-либо прокси или балансировщик нагрузки (программное обеспечение или его установка), который делает это по умолчанию?
Я уверен, что в таком случае мы сможем обеспечить проверку подписи на уровне прокси-сервера/балансировщика нагрузки, но это может быть весомым аргументом, если это распространено среди посредников, которых мы не контролируем.
Пожалуйста, дайте мне знать, что вы знаете об этом. Дайте мне знать, если у вас есть какие-либо вопросы.
В качестве пояснения,Строка запросаЯ имею в виду ?arg1=val1&arg2=val2
часть " " следующего URL:
http://example.com/something/else?arg1=val1&arg2=val2
И "изменение строки запроса«Я имею в виду любое действие, которое может привести к тому, что запрос будет выглядеть по-разному для клиента и для сервера (сервер видит строку запроса, отличную от той, которую использовал клиент).
решение1
Многие современные обратные прокси могут изменять строки запросов. Но я не вижу причин, по которым балансировщик нагрузки или прокси будут делать это по умолчанию.
Возможно, он использует URI для балансировки нагрузки липких сессий, но это было бы очень глупо.
Итак: Нет, я не знаю ни одного балансировщика нагрузки, изменяющего URI и параметры по умолчанию.
решение2
Я пока не видел прокси-сервера, который бы это делал, но это может быть жизнеспособным решением для сохранения сеанса, если вы не можете сделать это по IP и хотите, чтобы это работало, даже если у пользователя отключены файлы cookie.