I read that sending usernames via query parameters is not a good practice
Dove l'hai letto?
Ci sono alcune cose di cui dovresti aver cura quando invii qualcosa attraverso un parametro di query di un GET HTTP:
-
Informazioni sensibili. L'inserimento di tali informazioni nell'URI è chiaramente sbagliato. Sebbene i parametri di query siano crittografati quando si utilizza HTTPS, tali parametri vengono comunque salvati in modo non sicuro. I log HTTP sono uno degli esempi in cui le informazioni sensibili non hanno posto.
-
Parametri lunghi. Sebbene HTTP sia piuttosto permissivo quando si tratta di URI lunghi, l'infrastruttura potrebbe non essere così permissiva. Ad esempio, il limite predefinito (che può essere facilmente modificato) per un URI intero in HAProxy è 8K e alcune applicazioni potrebbero prevedere URI più brevi.
-
Caratteri Unicode. Di per sé, i caratteri Unicode negli URI non hanno nulla di sbagliato, tuttavia, devi assicurarti che la tua applicazione li gestisca correttamente sia quando li invii (tramite AJAX o collegamenti ipertestuali) e ricevendo sul lato server.
-
Sicurezza. se un URI come link accede all'utente user1
, questo potrebbe non essere quello che vuoi in termini di sicurezza. Più seriamente, non fidarti mai di alcun input, e questa regola include il nome utente: il fatto che qualcuno ti abbia detto nella richiesta che è il user1
non significa nulla . Assicurati che i nomi utente siano utilizzati in un contesto corretto. Un esempio di contesto corretto sarebbe link , una pagina che conduce al profilo pubblico dell'utente, o, allo stesso modo, link .
I nomi utente non sono informazioni sensibili: spesso sono le uniche informazioni sull'utente che è pubblico. Non ci si aspetta che siano troppo lunghi, o probabilmente avrai preoccupazioni più importanti della lunghezza dei tuoi URI. Possono e di solito contengono caratteri Unicode, ma non appena controlli che l'app sia gestita bene, non ci sono problemi nemmeno lì. Lo stesso vale per la sicurezza: se si utilizza l'input in modo errato, si avrà lo stesso identico problema con le intestazioni HTTP o qualsiasi altra forma di input.
Quindi no, non devi "nascondere" nomi utente ovunque, sarebbe nelle intestazioni HTTP, nei cookie o nel corpo della richiesta.