Stai essenzialmente chiedendo se è sicuro passare i parametri segreti in una richiesta GET. In realtà questa è classificata come vulnerabilità . Non è possibile forzare una stringa pseudocasuale sufficientemente lunga, supponendo che il server restituisca semplicemente una risposta statica 404 ogni volta che viene specificato un percorso non valido, ma in pratica vi sono numerosi altri problemi di sicurezza che rendono questa tecnica pericolosa:
-
Il software di registrazione registra spesso richieste GET in testo semplice, ma non POST.
-
L'utilizzo di GET rende CSRF banale * durante l'elaborazione del contenuto attivo.
-
Le intestazioni di referer possono far filtrare valori segreti ad altri siti web.
-
La cronologia del browser manterrà i segreti passati nelle richieste GET.
Il tuo secondo esempio ha /admin/
in esso. Ciò implica che la conoscenza di questo percorso da sola sarebbe sufficiente per autenticare il server in un contesto di amministratore. Questo è molto insicuro e non dovrebbe essere più fatto di /?password=hunter2
, una maggiore sicurezza web faux pas .
Invece, i segreti dovrebbero essere inviati in una richiesta POST. Se questo non è possibile o se il tuo modello di minaccia è esclusivamente per impedire la forza bruta dell'URL (ad esempio, i link di reimpostazione password che vengono prontamente invalidati dopo l'uso), allora dovrebbe essere sicuro se fatto con attenzione. Non sono a conoscenza di attacchi di canale laterale che forniscano un metodo per ottenere la stringa più veloce della forza bruta.
* Evitare richieste GET parametrizzate non impedisce gli attacchi CSRF, che è un malinteso comune in quanto vi sono vari modi per abusare in modo simile di POST (forme false, ecc.), ma il passaggio di segreti in GET rende CSRF più semplice.