Si el objetivo es prevenir URL "estáticos" de ser manipulado, a continuación, simplemente puede cifrar los parámetros, o firmen. Es probable que sea "lo suficientemente seguro" para agregar un MD5 de los parámetros de URL, junto con un poco de sal. La sal puede ser una cadena aleatoria almacenada en la sesión, por ejemplo.
a continuación, puedes:
http://example.com/service?x=123&y=Bob&sig=ABCD1324
Esta técnica expone los datos (es decir, pueden "ver" que xyz = 123), pero no pueden cambiar los datos.
Hay una ventaja de "encriptación" (y yo uso ese término sin apretar). Aquí es donde encriptas toda la sección de parámetros de la URL.
Aquí puede hacer algo como:
http://example.com/service?data=ABC1235ABC
Lo bueno de usar el cifrado es doble.
Uno protege los datos (el usuario nunca puede ver que xyz = 123, por ejemplo).
La otra característica es que aunque es extensible:
http://example.com/service?data=ABC1235ABC&newparm=123&otherparm=abc
Aquí, se puede decodificar la carga útil original, y hacer un (seguro) fusionarse con los nuevos datos.
Entonces, las solicitudes pueden AGREGAR datos a la solicitud, simplemente no cambian los datos EXISTENTES.
Puede hacer lo mismo a través de la técnica de firma, solo necesita consolidar toda la solicitud en un solo "blob", y ese blob está firmado implícitamente. Eso está "efectivamente" encriptado, solo una encriptación débil.
Obviamente no desea hacer NINGUNO de esto en el cliente. No tiene sentido.Si puede hacerlo, "ellos" pueden hacerlo y usted no puede notar la diferencia, por lo que es mejor que no lo haga en absoluto, a menos que desee "encriptar" datos en un puerto HTTP normal (frente a TLS, pero entonces la gente sabiamente se preguntaría "por qué molestarse").
Para Java, todo este trabajo va en un filtro, así es como lo hice. El back-end está aislado de esto.
Si lo desea, puede hacer que la parte de atrás esté completamente aislada de esto con un filtro de salida que maneja el cifrado/firma de URL a la salida.
Eso es lo que hice.
El inconveniente es que es muy complicado para hacerlo bien y realizarlo. Necesita un analizador de HTML ligero para extraer las URL (escribí un analizador de transmisión para hacerlo sobre la marcha, por lo que no copió toda la página en la memoria RAM).
El lado positivo es que todo el contenido "solo funciona", ya que no saben nada al respecto.
También hay un manejo especial cuando se trata de Javascript (ya que su filtro no "sabrá" fácilmente dónde hay una URL para encriptar). Lo resolví solicitando que las URL se firmaran para ser específicas "var signedURL = '....'", por lo que puedo encontrarlas fácilmente en la salida. No es una carga tan pesada para los diseñadores como se podría pensar.
El otro lado brillante del filtro es que puede deshabilitarlo. Si tiene algún "comportamiento extraño" que ocurre, simplemente apáguelo. Si el comportamiento continúa, has encontrado un error relacionado con el cifrado. También permite a los desarrolladores trabajar en texto plano y dejar el cifrado para las pruebas de integración.
Dolor por hacer, pero en general es agradable al final.
Si publicas de un formulario, los parámetros no serán parte de la URL – DwB
es por eso que dwb dijeron "post" –
Según entiendo la ofuscación es cuando los datos se oculta debido a la complejidad (como ROT13 o XOR operaciones), el cifrado es cuando debe conocer un secreto para acceder a los datos. –