È sicuro inserire un jwt (token web json) nell'URL come parametro di query di una richiesta GET?È sicuro inserire un jwt nell'URL come parametro di query di una richiesta GET?
risposta
Può essere sicuro nei seguenti casi:
- la JWT è tempo di utilizzo sola volta
- le
jti
eexp
rivendicazioni sono presenti nel token - ricevitore implementa correttamente la protezione della riproduzione utilizzando
jti
eexp
ma nel caso in cui viene utilizzato come un token che può essere ripetuto essere usato per es. rispetto a un'API, quindi la fornitura come parametro di query è meno preferibile in quanto potrebbe finire nei registri e nelle informazioni di processo del sistema, disponibili per gli altri che hanno accesso al server o al sistema client. In tal caso sarebbe meglio presentarlo come parte di un'intestazione o di un parametro POST.
Oltre a ciò, utilizzandolo nei parametri di query è possibile eseguire limitazioni di dimensioni URL su browser o server; utilizzarlo in un'intestazione fornisce un po 'più di spazio, usandolo come un parametro POST funzionerebbe meglio.
Non è necessario includere informazioni riservate nell'URL. Puoi crittografare il jwt e includerlo nell'URL utilizzando il metodo GET. Tuttavia, ricorda che alcuni hacker potrebbero essere in grado di decodificarlo, il che sarà un problema se contiene informazioni riservate. Quindi, se non è riservato, puoi includerlo, altrimenti usa un metodo diverso come, POST o sessione.
Eh ... il tipo di richiesta in realtà non fa nulla per proteggersi dagli hacker. Perché dovrebbero essere in grado di leggere le tue richieste GET, ma non le richieste POST? Se hanno toccato la tua connessione, sembra lo stesso. Se è SSL/TLS, anche la stringa di query è protetta. – Gray
I parametri di query vengono visualizzati nella cronologia del browser. Non visibile agli avversari remoti, ma comunque debolezza nella sicurezza. – dnault
Che è rilevante per lo spargimento accidentale dei dati, ad es. avere il token raschiato e servito da google. Tuttavia, per sicurezza, il token deve essere limitato nel tempo e nell'uso. –
- 1. Come inviare una richiesta HTTP con un parametro di intestazione?
- 2. Come non registrare un parametro di richiesta get nei log di accesso di nginx?
- 3. node.js richiesta http 'get' con parametri stringa di query
- 4. Come verificare se un parametro 'sconosciuto' viene fornito nella stringa di query di una richiesta?
- 5. È sicuro inserire un indice su una tabella temporanea Oracle?
- 6. window.location() è uguale a una richiesta GET?
- 7. Come posso inserire una richiesta POST in un UIWebView
- 8. RestTemplate Richiesta GET con parametri di richiesta
- 9. HTTP: la richiesta POST riceve un 302, se la richiesta di reindirizzamento è una GET?
- 10. aprire un collegamento da Java, come nascondere GET parametro
- 11. Client Jersey: come aggiungere un elenco come parametro di query
- 12. Come inviare una richiesta GET da PHP?
- 13. Chi aggiunge "_" Parametro di query Single Underscore?
- 14. Spring MVC Come si assume il valore del parametro di una richiesta HTTP GET nel mio metodo di controllo?
- 15. fare una richiesta GET ad un webservice dal playframework 2.0
- 16. Una richiesta GET di Jersey può restituire un'entità polimorfica?
- 17. Simulando un XHR richiesta GET
- 18. Elasticsearch Richiesta GET con corpo della richiesta
- 19. Parametro richiesta di uscita per modello
- 20. Google oAuth 2.0 (richiesta token JWT) per l'applicazione di servizio
- 21. Invio booleano come parametro di richiesta
- 22. Get URL richiesto o un parametro di azione i MediaTypeFormatter.ReadFromStreamAsync
- 23. web.py: come ottenere il parametro POST e il parametro GET?
- 24. Ottieni i parametri HTTP GET dalla richiesta di Restlet
- 25. Lunghezza massima della stringa di query in una richiesta GET AJAX?
- 26. Aggiungere parametri di query a una richiesta GET in okhttp in Android
- 27. JWT: come gestire le richieste GET quando l'utente apre una nuova scheda?
- 28. Controllare se una richiesta è GET o POST
- 29. Get Coldfusion per analizzare una richiesta JSON
- 30. Come inserire un lambda in un'espressione Linq di query dichiarativo
Inoltre, gli utenti non addestrati possono copiare e incollare un URL con il token, che potrebbe portare a un dirottamento di sessione non intenzionale. – Gray
Se l'endpoint è REST, ci sono molti casi in cui è necessario utilizzare il metodo GET. Inoltre, se la richiesta è da scaricare, non puoi nemmeno usare ajax. –
Che dire di un 'exp' ragionevolmente breve <2 min. più un secondo reindirizzamento (dopo che il 'jwt' è stato raccolto dall'app)? Il secondo reindirizzamento per evitare semplicemente i problemi di copia e incolla. Se il tuo browser è compromesso, anche un'intestazione non ti salverà dal tuo token per essere rubato. –