
Introdução ao problema
Recentemente eu estava trabalhando em algum algoritmo de assinatura de solicitação e descobri que as opiniões sobre a inclusão da string de consulta na parte que é assinada são "diversificadas".
Resumindo, o argumento da pessoa contra a inclusão da string de consulta na string para assinatura é que as strings de consulta podem ser alteradas (por exemplo, os valores podem ser alterados, os argumentos podem ser removidos/adicionados, a ordem pode ser alterada).
Além disso, nunca experimentei tal comportamento no proxy ou no balanceador de carga, embora tenha experimentado coisas como ocultar Authorization
o cabeçalho (por exemplo, pelo Apache/WSGI), alterar o método da solicitação (pelo balanceador de carga, provavelmente os servidores da Amazon fazem isso). Eu sei que tal comportamento pode ser habilitado no proxy reverso ou no balanceador de carga, usando alguns scripts/regras personalizados, mas isso poderia ser feito comqualquerparte do pedido.
Muito trabalho foi feito com base na suposição de que a string de consulta deveria ser incluída, além de parecer bobagem não assinar uma das partes mais importantes da solicitação. Portanto, preciso saber se a inclusão da string de consulta no formato bruto (conforme passada na URL) será um problema no futuro ou não.
Pergunta real
Então minha pergunta é:
É comum que qualquer proxy ou balanceador de carga altere as strings de consulta? Parece bobo para mim. Você conhece algum proxy ou balanceador de carga (software ou sua instalação) que faça isso por padrão?
Tenho certeza de que, nesse caso, podemos lidar com a verificação de assinatura no nível do proxy/balanceador de carga, mas pode ser um argumento viável se isso for comum entre os intermediários que não controlamos.
Por favor, deixe-me saber o que você sabe sobre isso. Deixe-me saber se você tiver alguma dúvida.
A título de esclarecimento, porstring de consultaQuero dizer a ?arg1=val1&arg2=val2
parte " " do seguinte URL:
http://example.com/something/else?arg1=val1&arg2=val2
E por "alterando a string de consulta"Quero dizer, qualquer ação que possa fazer com que pareça diferente para o cliente e para o servidor (o servidor vê uma string de consulta diferente da usada pelo cliente).
Responder1
Muitos proxies reversos modernos podem alterar as strings de consulta. Mas não vejo razão para que um balanceador de carga ou proxy faça isso por padrão.
Talvez ele use o URI para balanceamento de carga de sessão fixa, mas isso seria realmente estúpido.
Então: Não, não conheço nenhum balanceador de carga, alterando o uri e os parâmetros por padrão.
Responder2
Ainda não vi um proxy que faça isso, mas pode ser uma solução viável para a permanência da sessão se você não puder fazer isso por IP e quiser que funcione mesmo que o usuário tenha os cookies desabilitados.