Question Pouvez-vous passer utilisateur / passe pour l’authentification HTTP de base dans les paramètres d’URL?


Je crois que ce n'est pas possible, mais quelqu'un que je connais a insisté pour que cela fonctionne. Je ne sais même pas quels paramètres essayer, et je ne l'ai trouvé nulle part documenté.

j'ai essayé http://myserver.com/~user=username&password=mypassword mais ça ne marche pas.

Pouvez-vous confirmer qu'il n'est en fait pas possible de transmettre l'utilisateur / via les paramètres HTTP (GET ou POST)?


124
2018-03-21 11:16


origine


utilisateur: pass@example.com - Smudge
@sam - quoi? Comment serait l'URL complète? - ripper234
Tous dans la spec ietf.org/rfc/rfc1738.txt (3.1) - Smudge
@ Sam - Désolé, je n'ai pas réussi à analyser votre commentaire pour une raison quelconque. - ripper234


Réponses:


Il n'est en effet pas possible de transmettre le nom d'utilisateur et le mot de passe via des paramètres de requête dans une autorisation HTTP standard. Au lieu de cela, vous utilisez un format d’URL spécial, comme ceci: http://username:password@example.com/ - cela envoie les informations d'identification dans l'en-tête HTTP "Authorization" standard.

Il est possible que votre interlocuteur ait pensé à un module personnalisé ou à un code qui examine les paramètres de la requête et vérifie les informations d'identification. Ce n'est pas une autorisation HTTP standard, cependant, c'est une chose spécifique à l'application.


167
2018-03-21 11:38



Merci, c’est justement ce que je cherchais ... il n’est pas essentiel que ce soit des paramètres GET, mais seulement que je puisse l’adapter à l’URL. - ripper234
FYI, le http://username:password@example.com le format n'est plus supporté par C'EST À DIRE ou Chrome, ne serait pas surpris si d’autres faisaient de même s’ils ne l’avaient pas déjà fait. - T.J. Crowder
Fonctionne vraiment bien dans Chrome. Seul IE est un gamin gâté. - Damien Overeem ツ
@DamienOvereem sur quelle version de chrome êtes-vous? je suis sur mac os x 37 et il ne semble pas fonctionner pour moi - Chris DaMour
Depuis, j'ai appris que Chrome l'avait désactivée pendant un certain temps, mais que cette fonctionnalité avait été réactivée par la suite. J'ai également appris que Safari commettrait des erreurs de phishing en cas d'exécution de ce type de liens. Fondamentalement, l'authentification http à base d'URL est terminée. - Damien Overeem ツ


http: // nom d'utilisateur: password@example.com fonctionnera pour FireFox, Chrome, Safari MAIS pas pour IE.

Base de connaissances Microsoft


16
2018-01-23 10:50



Cette fonctionnalité a été supprimée de Chrome 19+. Voir code.google.com/p/chromium/issues/detail?id=123150 - Moshe Katz
À la lecture de ce rapport de bogue, il a été ajouté de nouveau à Chrome 20. Certes, je m'attendrais à voir beaucoup de plaintes se poursuivre à ce sujet si ce n’était pas le cas. - womble♦
Je l'ai maintenant demandé pour Internet Explorer: connect.microsoft.com/IE/feedback/details/873575/…. Cas d'utilisation légèrement différent, mais abordant le même problème;) - SimonSimCity
@Diago si le mot de passe contient '@' alors il ne fonctionne pas. cela donne une erreur fatale, quelqu'un peut-il me dire comment donner un nom d'utilisateur et un mot de passe à la fois - Ashish Jain
@AshishJain - Je voudrais essayer d'échapper à la @ dans le mot de passe comme %40. (Je ne sais pas si cela fonctionne, cependant, et cela peut dépendre du serveur ou de la combinaison navigateur / serveur.) - David Moles


Passer les paramètres d'authentification de base dans l'URL n'est pas recommandé

Il existe un champ d’entête Authorization à cet effet, cochez-le ici: liste d'en-tête http

Comment l'utiliser est écrit ici: Authentification d'accès de base

Vous pouvez également y lire que même s’il est toujours pris en charge par certains navigateurs, la solution suggérée consistant à ajouter les informations d’autorisation d’autorisation de base dans l’URL n’est pas recommandée.

Lire aussi chapitre 4.1 de la RFC 2617 - Authentification HTTP pour plus de détails sur pourquoi NE PAS utiliser l'authentification de base.


Passage des paramètres d'authentification dans la chaîne de requête

Lorsque vous utilisez OAuth ou d'autres services d'authentification, vous pouvez souvent également envoyer votre jeton d'accès dans une chaîne de requête plutôt que dans un en-tête d'autorisation. Par exemple:

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

14
2017-09-24 07:55



Et comment va-t-on coder un en-tête d'autorisation dans une URL? - womble♦
N'est-ce pas que le formulaire que vous avez déclaré était maintenant obsolète? - womble♦
La question à laquelle vous avez répondu "Il existe un champ d'en-tête d'autorisation à cette fin" demandait comment définir les paramètres d'authentification. dans l'URL. Si vous ne pouvez pas encoder les champs d'en-tête HTTP dans une URL (ce que vous ne pouvez pas), votre réponse est non séquentielle. - womble♦
Pouvez-vous citer où, dans la norme URI, il est déconseillé de transmettre des paramètres d'authentification de base dans URI? La RFC 2396 dit seulement que c'est "NON RECOMMANDÉ" car les détails de l'authentification en texte brut ne sont, dans de nombreuses circonstances, pas une bonne idée (avec laquelle je suis d'accord), alors que la RFC 7235 ne mentionne rien. Nulle part dans les spécifications que je peux rechercher ne dit que cela est obsolète. - Lie Ryan
@Wilt: Je dois m'excuser, vous avez effectivement raison. Votre allusion au fait que la spécification a été "modifiée" m'a incité à poursuivre mes recherches (une RFC n'est jamais modifiée une fois publiée / numérotée). Je viens de constater que la RFC 2396 a été remplacée par RFC 3986, que je n'ai pas pu trouver plus tôt. La RFC 3986 mentionne la dépréciation de nom d'utilisateur: syntaxe de mot de passe: Use of the format "user:password" in the userinfo field is deprecated. - Lie Ryan


Il est (évidemment) possible d'envoyer n'importe quelle chaîne dans les paramètres de GET, bien qu'il ne soit pas recommandé d'envoyer un identifiant et un mot de passe, car cela peut le rendre très visible, surtout s'il ne s'agit pas d'une requête AJAX.

Cependant, vous devrez ensuite coder la page du serveur pour extraire le nom d'utilisateur et le mot de passe, puis les valider et les utiliser de la manière requise.


0
2017-09-11 08:22