Pregunta ¿Puede pasar usuario / paso para la autenticación básica HTTP en los parámetros de URL?


Creo que esto no es posible, pero alguien que conozco insistió en que funciona. Ni siquiera sé qué parámetros probar, y no he encontrado esto documentado en ninguna parte.

Lo intenté http://myserver.com/~user=username&password=mypassword pero no funciona

¿Puede confirmar que de hecho no es posible pasar el usuario / pasar a través de los parámetros HTTP (GET o POST)?


124
2018-03-21 11:16


origen


usuario: pass@example.com - Smudge
@sam - ¿qué? ¿Cómo se vería la URL completa? - ripper234
Todo en la especificación. ietf.org/rfc/rfc1738.txt (3.1) - Smudge
@sam: Lo siento, pero no pude analizar tu comentario por alguna razón. - ripper234


Respuestas:


De hecho, no es posible pasar el nombre de usuario y la contraseña a través de los parámetros de consulta en la autenticación HTTP estándar. En su lugar, utiliza un formato de URL especial, como este: http://username:password@example.com/ - esto envía las credenciales en el encabezado estándar HTTP "Autorización".

Es posible que quienquiera que hablabas estuviera pensando en un módulo o código personalizado que examinó los parámetros de consulta y verificó las credenciales. Esto no es una autenticación HTTP estándar, sin embargo, es una cosa específica de la aplicación.


167
2018-03-21 11:38



Gracias, esto es justo lo que estaba buscando ... no es crítico que sean parámetros GET, solo que puedo incluirlo en la URL. - ripper234
Para tu información, el http://username:password@example.com formato ya no es compatible con cualquiera ES DECIR o Cromo, no se sorprendería si otros siguieran su ejemplo si no lo hubieran hecho ya. - T.J. Crowder
Realmente funciona bien en Chrome. Sólo IE está siendo un mocoso mimado. - Damien Overeem ツ
@DamienOvereem en qué versión de Chrome estás? Estoy en Mac OS X 37 y no parece funcionar para mí - Chris DaMour
Desde entonces he aprendido que Chrome lo tuvo desactivado por un tiempo, pero volví a habilitar esta función más adelante. También aprendí que Safari producirá errores de phishing cuando se encuentre en este tipo de enlaces. Básicamente, el tiempo de autenticación http basada en url ha terminado. - Damien Overeem ツ


http: // nombre de usuario: contraseña@ejemplo.com Funcionará para FireFox, Chrome, Safari PERO no para IE.

Microsoft Knowledge Base


16
2018-01-23 10:50



Esta capacidad fue eliminada de Chrome 19+. Ver code.google.com/p/chromium/issues/detail?id=123150 - Moshe Katz
Al leer el informe de errores, se volvió a agregar a Chrome 20. Ciertamente, esperaría ver muchas quejas continuas si no hubiera sido así. - womble♦
Ahora lo solicité para Internet Explorer: connect.microsoft.com/IE/feedback/details/873575/…. Un caso de uso ligeramente diferente, pero aborda el mismo problema;) - SimonSimCity
@Diago si la contraseña contiene '@' entonces no funciona. da un error fatal, ¿alguien puede decirme cómo podemos dar un nombre de usuario y contraseña a la vez - Ashish Jain
@AshishJain - Intentaría escapar de la @ en la contraseña como %40. (No sé si eso funciona, y podría depender del servidor o la combinación de navegador / servidor). - David Moles


No se recomienda pasar parámetros de autenticación básicos en URL.

Hay un campo de encabezado de Autorización para este propósito, verifíquelo aquí: lista de encabezados http

Cómo usarlo está escrito aquí: Autenticación de acceso básico

Allí también puede leer que aunque todavía es compatible con algunos navegadores, no se recomienda la solución sugerida de agregar las credenciales de autorización básica en la url.

Lee tambien Capítulo 4.1 en RFC 2617 - Autenticación HTTP para más detalles sobre por qué NO usar la autenticación básica.


Pasando parámetros de autenticación en cadena de consulta

Cuando utiliza OAuth u otros servicios de autenticación, a menudo también puede enviar su token de acceso en una cadena de consulta en lugar de en un encabezado de autorización, por lo que algo como:

GET https://www.example.com/api/v1/users/1?access_token=1234567890abcdefghijklmnopqrstuvwxyzABCD

14
2017-09-24 07:55



¿Y cómo se hace para codificar un encabezado de Autorización en una URL? - womble♦
¿No es esa la forma que usted declaró que ahora estaba en desuso? - womble♦
La pregunta que contestó con "Hay un campo de encabezado de Autorización para este propósito" estaba preguntando cómo colocar los parámetros de autenticación en la URL. Si no puede codificar los campos de encabezado HTTP en una URL (que no puede), su respuesta no es secuencial. - womble♦
¿Puede citar en qué parte del URI estándar dice que pasar parámetros de autenticación básicos en URI está en desuso? RFC 2396 solo dice que "NO SE RECOMIENDA" porque los detalles de autenticación en texto simple no son, en muchas circunstancias, una buena idea (estoy de acuerdo), mientras que RFC 7235 no menciona nada. En ninguna parte de las especificaciones que puedo buscar dice que está en desuso. - Lie Ryan
@Wilt: Tengo que disculparme, de hecho tienes razón. Su sugerencia de que la especificación fue "alterada" me instigó a investigar más (una RFC nunca se modifica una vez que se publica / numera). Acabo de descubrir que RFC 2396 ha sido reemplazado por RFC 3986, que no pude encontrar antes. RFC 3986 menciona la eliminación de la sintaxis del nombre de usuario: contraseña: Use of the format "user:password" in the userinfo field is deprecated. - Lie Ryan


Es (obviamente) posible enviar cualquier cadena en los parámetros GET, aunque no se recomienda enviar el inicio de sesión y la contraseña, ya que puede hacer que sea altamente visible, especialmente si no está en una solicitud AJAX.

Sin embargo, deberá codificar la página del servidor para extraer el nombre de usuario y la contraseña, y luego validarlos y usarlos de la manera que sea necesaria.


0
2017-09-11 08:22