Você pode passar usuário / senha para autenticação básica HTTP nos parâmetros de URL?

153

Eu acredito que isso não é possível, mas alguém que eu conheço insistiu que funcionasse. Nem sei quais parâmetros tentar e não encontrei esse documento em nenhum lugar.

Eu tentei http://myserver.com/~user=username&password=mypassword, mas não funciona.

Você pode confirmar que não é realmente possível passar o usuário / passar por parâmetros HTTP (GET ou POST)?

ripper234
fonte
@sam - o que? Como seria o URL completo?
precisa saber é o seguinte
4
Tudo na especificação ietf.org/rfc/rfc1738.txt (3.1)
Smudge 21/03
@ sam - Desculpe, mas não consegui analisar o seu comentário por algum motivo.
precisa saber é o seguinte

Respostas:

200

De fato, não é possível passar o nome de usuário e a senha por meio de parâmetros de consulta na autenticação HTTP padrão. Em vez disso, você usa um formato de URL especial, assim: http://username:[email protected]/- envia as credenciais no cabeçalho HTTP "Autorização" padrão.

É possível que quem você estava falando estivesse pensando em um módulo ou código personalizado que examinou os parâmetros da consulta e verificou as credenciais. Porém, isso não é autenticação HTTP padrão, é algo específico de um aplicativo.

mulher
fonte
1
Obrigado, é exatamente isso que eu estava procurando ... não é crítico que sejam parâmetros GET, apenas que eu possa criar isso na URL.
precisa saber é o seguinte
42
Para sua informação, o http://username:[email protected]formato não é mais suportado pelo IE ou pelo Chrome ; não ficaria surpreso se outros seguissem o exemplo, se ainda não o fizeram.
usar o seguinte
11
Na verdade, funciona bem no Chrome. Apenas o IE está sendo um pirralho mimado.
precisa saber é o seguinte
1
@DamienOvereem em qual versão do Chrome você está? eu estou em mac os x 37 e não parece trabalhar para mim
Chris Damour
11
Desde então, soube que o Chrome o desativou por um tempo, mas reativou esse recurso posteriormente. Eu também aprendi que o Safari irá lançar erros de phishing ao executar para estes tipos de ligações .. Basicamente, o tempo de autenticação http-base url é mais ..
Damien Overeemツ
18

Passagem de parâmetros de autenticação básica no URL não recomendado

Existe um campo de cabeçalho de autorização para esse fim, verifique aqui: lista de cabeçalhos http

Como usá-lo está escrito aqui: Autenticação básica de acesso

Lá, você também pode ler que, apesar de ainda ser suportado por alguns navegadores, a solução sugerida para adicionar credenciais de autorização básica no URL não é recomendada.

Leia também o capítulo 4.1 da RFC 2617 - Autenticação HTTP para obter mais detalhes sobre por que NÃO usar a autenticação básica.


Passando parâmetros de autenticação na string de consulta

Ao usar o OAuth ou outros serviços de autenticação, também é possível enviar seu token de acesso em uma sequência de consultas em vez de em um cabeçalho de autorização, algo como:

GET https://www.example.com/api/v1/users/1?access_token=1234567890abcdefghijklmnopqrstuvwxyzABCD
Wilt
fonte
E como se codifica um cabeçalho de autorização em um URL?
Womble
2
Não é que o formulário que você declarou agora está obsoleto?
Womble
2
A pergunta que você respondeu com "Existe um campo de cabeçalho de autorização para esse fim" estava perguntando como colocar parâmetros de autenticação no URL . Se você não pode codificar os campos do cabeçalho HTTP em um URL (o que você não pode), sua resposta é não sequitur.
Womble
Você pode citar onde no padrão URI diz que a transmissão de parâmetros básicos de autenticação no URI está obsoleta? O RFC 2396 diz apenas que "NÃO É RECOMENDADO" porque os detalhes da autenticação em texto sem formatação não são, em muitas circunstâncias, uma boa ideia (da qual concordo), enquanto o RFC 7235 não menciona nada. Em nenhum lugar nas especificações que posso pesquisar diz que está obsoleto.
Lie Ryan
1
@ Wilt: Eu tenho que me desculpar, você está realmente correto. Sua dica de que a especificação foi "alterada" me instigou a investigar mais (uma RFC nunca é modificada depois de publicada / numerada). Acabei de descobrir que a RFC 2396 foi realmente substituída pela RFC 3986 , que não consegui encontrar anteriormente. O RFC 3986 menciona a descontinuação do nome de usuário: sintaxe da senha:Use of the format "user:password" in the userinfo field is deprecated.
Lie Ryan
17

http: // nome do usuário: [email protected] funcionará no FireFox, Chrome e Safari, mas não no IE.

Base de Conhecimento Microsoft

Girish Kumar
fonte
2
Esse recurso foi removido do Chrome 19+. Consulte code.google.com/p/chromium/issues/detail?id=123150
Moshe Katz
4
Pela minha leitura desse relatório de bug, ele foi adicionado novamente ao Chrome 20. Certamente, eu esperaria ver muitas reclamações continuadas, se não tivesse sido.
Womble
Agora eu solicitei para o Internet Explorer: connect.microsoft.com/IE/feedback/details/873575/… . Caso de uso ligeiramente diferente, mas aborda o mesmo problema;)
SimonSimCity 16/05
@Diago se a senha contiver '@', não funcionará. dá erro fatal, alguém pode me dizer como podemos dar nome de usuário e senha de uma só vez
Ashish Jain
@ AshishJain - eu tentaria escapar do @na senha como %40. (Não sei se isso funciona, porém, e pode depender do servidor ou combinação de navegador / servidor.)
David Moles
0

É (obviamente) possível enviar qualquer string nos parâmetros GET, embora não seja recomendado o envio de login e senha, pois podem torná-lo altamente visível, especialmente se não estiver em uma solicitação AJAX.

No entanto, você precisará codificar a página do servidor para extrair o login e a senha, validá-los e usá-los da maneira que for necessária.

Steve Smith
fonte