
Introducción al problema
Recientemente estuve trabajando en un algoritmo de firma de solicitudes y resultó que las opiniones sobre incluir una cadena de consulta en la parte que luego se firma están "diversificadas".
En pocas palabras, el argumento de la persona en contra de incluir una cadena de consulta en la cadena para firmar es que las cadenas de consulta se pueden modificar (por ejemplo, los valores se pueden cambiar, los argumentos se pueden eliminar/agregar, el orden se puede cambiar).
Además, nunca he experimentado tal comportamiento en el proxy o el balanceador de carga, a pesar de que experimenté cosas como ocultar Authorization
el encabezado (por ejemplo, por Apache/WSGI), alterar el método de la solicitud (por el balanceador de carga, probablemente los servidores de Amazon hacen tal cosa). Sé que este comportamiento se puede habilitar en un proxy inverso o en un balanceador de carga, usando algunos scripts/reglas personalizados, pero se podría hacer concualquierparte de la solicitud.
Se ha trabajado mucho basándose en la suposición de que se debe incluir la cadena de consulta, además parece una tontería no firmar una de las partes más importantes de la solicitud. Por lo tanto, necesito saber si incluir la cadena de consulta en el formato sin formato (tal como se pasa dentro de la URL) será un problema en el futuro o no.
Pregunta real
Entonces mi pregunta es:
¿Es común que cualquier proxy o balanceador de carga altere las cadenas de consulta? Me parece una tontería. ¿Conoce algún proxy o equilibrador de carga (software o su instalación) que haga eso de forma predeterminada?
Estoy seguro de que en tal caso podemos manejar la verificación de firmas en el nivel de proxy/equilibrador de carga, pero puede ser un argumento viable si esto es común entre los intermediarios que no controlamos.
Por favor, déjame saber lo que sabes al respecto. Hazme saber si tienes alguna pregunta.
A modo de aclaración, porcadena de consultaMe refiero a la ?arg1=val1&arg2=val2
parte " " de la siguiente URL:
http://example.com/something/else?arg1=val1&arg2=val2
Y por "alterando la cadena de consulta"Me refiero a cualquier acción que pueda hacer que parezca diferente para el cliente y para el servidor (el servidor ve una cadena de consulta diferente a la que ha utilizado el cliente).
Respuesta1
Muchos servidores proxy inversos modernos podrían alterar las cadenas de consulta. Pero no veo ninguna razón por la que un equilibrador de carga o un proxy lo haga de forma predeterminada.
Tal vez use el URI para equilibrar la carga de sesiones fijas, pero eso sería realmente estúpido.
Entonces: No, no conozco ningún balanceador de carga, alterando el uri y los parámetros de forma predeterminada.
Respuesta2
Todavía tengo que ver un proxy que lo haga, pero puede ser una solución viable para la permanencia de la sesión si no puedes hacerlo por IP y quieres que funcione incluso si el usuario tiene las cookies deshabilitadas.