Se l'obiettivo è di prevenire gli URL "statici" di essere manipolati, allora si può semplicemente cifrare i parametri, o firmare. Probabilmente è "abbastanza sicuro" da virare su un MD5 dei parametri URL, insieme a un po 'di sale. Il sale può essere una stringa casuale memorizzata nella sessione, ad esempio.
allora si può solo:
http://example.com/service?x=123&y=Bob&sig=ABCD1324
Questa tecnica espone i dati (vale a dire che possono "vedere" che xyz = 123), ma non può modificare i dati.
C'è un vantaggio di "crittografia" (e io uso questo termine liberamente). Qui è dove si cripta l'intera sezione dei parametri dell'URL.
Qui si può fare qualcosa di simile:
http://example.com/service?data=ABC1235ABC
La cosa bella utilizzando la crittografia è duplice.
Uno protegge i dati (l'utente non può mai vedere che xyz = 123, ad esempio).
L'altra caratteristica tho è che è estendibile:
http://example.com/service?data=ABC1235ABC&newparm=123&otherparm=abc
Qui, è possibile decodificare il payload originale, e fare un (sicuro) si fondono con i nuovi dati.
Quindi, le richieste possono AGGIUNGERE i dati alla richiesta, basta non modificare i dati ESISTENTI.
È possibile eseguire lo stesso tramite la tecnica di firma, basta consolidare l'intera richiesta in un singolo "blob" e tale blob viene firmato in modo implicito. Questo è "efficacemente" crittografato, solo una debole crittografia.
Ovviamente non si vuole fare nulla di questo sul client. Non ha senso.Se puoi farlo, "loro" possono farlo e non puoi dire la differenza, quindi potresti anche non farlo affatto, a meno che tu non voglia "cifrare" i dati su una normale porta HTTP (vs TLS, ma poi la gente si chiederà saggiamente "perché preoccuparsi").
Per Java, tutto questo lavoro va in un filtro, è così che l'ho fatto. Il back-end è isolato da questo.
Se lo si desidera, è possibile rendere completamente isolato il back-end con un filtro in uscita che gestisce la crittografia/firma dell'URL in uscita.
Questo è anche quello che ho fatto.
Il lato negativo è che è molto impegnato a farlo bene e performante. È necessario un parser HTML leggero per estrarre gli URL (ho scritto un parser di streaming per farlo al volo in modo da non copiare l'intera pagina nella RAM).
Il lato positivo è tutto il lato contenuto "funziona", in quanto non ne sa nulla.
C'è anche un trattamento speciale quando si ha a che fare con Javascript (poiché il filtro non "saprà" facilmente dove c'è un URL da crittografare). Ho risolto questo problema richiedendo che gli URL fossero firmati per essere specifici "var signedURL = '....'", quindi li trovo facilmente nell'output. Non è un peso schiacciante per i designer come potresti pensare.
L'altro lato positivo del filtro è che è possibile disabilitarlo. Se si verifica un "comportamento strano", basta spegnerlo. Se il comportamento continua, hai trovato un bug relativo alla crittografia. Permette inoltre agli sviluppatori di lavorare in testo semplice e lasciare la crittografia per i test di integrazione.
Dolore da fare, ma nel complesso è bello alla fine.
Se pubblichi da un modulo, i parametri non saranno parte dell'URL – DwB
è per questo Msf ha detto "post" –
A quanto ho capito offuscamento è quando i dati è nascosto a causa della complessità (come ROT13 o XOR operazioni), la crittografia è quando è necessario conoscere un segreto per accedere ai dati. –