Básicamente, está preguntando si es seguro pasar parámetros secretos en una solicitud GET. Esto se clasifica realmente como una vulnerabilidad . No es factible forzar la fuerza bruta en una cadena pseudoaleatoria suficientemente larga, suponiendo que el servidor simplemente devuelva una respuesta 404 estática siempre que se especifique una ruta no válida, pero hay muchos otros problemas de seguridad en la práctica que hacen de esta una técnica peligrosa:
-
El software de registro a menudo registra las solicitudes GET en texto sin formato, pero no en POST.
-
El uso de GET hace que CSRF trivial * al procesar contenido activo.
-
Los encabezados de los remitentes pueden filtrar valores secretos a otros sitios web.
-
El historial del navegador conservará los secretos pasados en las solicitudes GET.
Tu segundo ejemplo tiene /admin/
en él. Esto me implica que el conocimiento de esta ruta solo sería suficiente para autenticarse en el servidor en un contexto de administrador. Esto es muy inseguro y no se debe hacer más que /?password=hunter2
, un gran paso de seguridad web faux pas .
En su lugar, los secretos deben enviarse en una solicitud POST. Si esto no es posible o si su modelo de amenaza es exclusivamente para evitar la fuerza bruta de la URL (por ejemplo, los enlaces de restablecimiento de contraseña que se invalidan inmediatamente después de su uso), entonces debería ser seguro si se hace con cuidado. No tengo conocimiento de ningún ataque de canal lateral que proporcione un método para obtener la cadena más rápido que la fuerza bruta.
* Evitar las solicitudes GET parametrizadas no evita los ataques CSRF, que es un malentendido común ya que hay varias formas de abusar de forma similar de POST (formas falsas, etc.), pero pasar secretos en GET hace que CSRF sea más fácil.