Credenciais de autenticação básica HTTP transmitidas na URL e criptografia

250

Tenho uma pergunta sobre credenciais de autenticação HTTPS e HTTP.

Suponha que eu proteja uma URL com autenticação HTTP:

<Directory /var/www/webcallback>
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /var/www/passwd/passwords
Require user gooduser
</Directory>

Depois, acesso esse URL a partir de um sistema remoto via HTTPS, passando as credenciais no URL:

https://gooduser:[email protected]/webcallback?foo=bar

O nome de usuário e a senha serão automaticamente criptografados por SSL? O mesmo vale para GETs e POSTs? Estou com dificuldade para localizar uma fonte confiável com essas informações.

rcourtna
fonte
1
Relacionado: Nome de usuário e senha no URL https
Hawkeye Parker
Pergunta muito antiga, mas, no entanto: essa abordagem foi preterida por ietf.org/rfc/rfc3986.txt : "O uso do formato" usuário: senha "no campo userinfo foi preterido."
Madbreaks

Respostas:

237

O nome de usuário e a senha serão automaticamente criptografados por SSL? O mesmo vale para GETs e POSTs

Sim Sim Sim.

Toda a comunicação (exceto a pesquisa de DNS se o IP do nome do host ainda não estiver armazenado em cache) é criptografada quando o SSL está em uso.

Quentin
fonte
25
+1. GETs e POSTs, incluindo o URL, são criptografados. Vou acrescentar apenas - ferramentas como os dados do firebug e do Tamper podem mostrar os resultados não criptografados apenas porque fazem parte do navegador e, portanto, são capazes de interceptar a solicitação antes que ela seja criptografada. Uma vez enviado pela ligação, tudo é criptografado.
Sripathi Krishnan
21
Para ser claro, tudo, exceto o domínio, é criptografado. Se alguém se deparar com isso e
desejar
7
Por uma questão de integridade, "O Internet Explorer não oferece suporte a nomes de usuário e senhas em endereços de sites (URLs HTTP ou HTTPS) " Parece que apenas as versões 3.0 a 6.0 do Internet Explorer oferecem suporte à seguinte sintaxe para URLs HTTP ou HTTPS: http (s): //username:password@server/resource.ext Nota: Essa alteração no comportamento padrão não afeta outros protocolos. Por exemplo, você ainda pode incluir informações do usuário em um URL FTP depois de instalar a atualização de segurança 832894.
Luke
esta resposta não contém nenhuma fonte confiável nem explicações adicionais.
precisa saber é o seguinte
26

Sim, será criptografado.

Você entenderá se simplesmente verificar o que acontece nos bastidores.

  1. O navegador ou aplicativo primeiro divide a URL e tenta obter o IP do host usando uma Consulta DNS. ou seja: será feita uma solicitação de DNS para encontrar o endereço IP do domínio (www.example.com). Observe que nenhuma outra informação será enviada por essa solicitação.
  2. O navegador ou aplicativo iniciará uma conexão SSL com o endereço IP recebido da solicitação DNS. Os certificados serão trocados e isso acontece no nível do transporte. Nenhuma informação no nível do aplicativo será transferida neste momento. Lembre-se de que a autenticação básica faz parte do HTTP e o HTTP é um protocolo no nível do aplicativo. Não é uma tarefa da camada de transporte.
  3. Depois de estabelecer a conexão SSL, agora os dados necessários serão transmitidos ao servidor. ou seja: O caminho ou o URL, os parâmetros e o nome de usuário e senha de autenticação básica.
Ruchira Randana
fonte
-5

Não é necessariamente verdade. Ele será criptografado na conexão, no entanto, continuará no texto simples dos logs

Brandon
fonte
17
Qual servidor Web registra o nome de usuário e as senhas das solicitações? Seria um servidor web inseguro.
Andrew Barber
1
Sim, isso não é verdade. Provavelmente, é possível instruir o apache para registrar essas informações, mas certamente não o faz por padrão.
DougW 13/08/12
27
O @Brandon provavelmente estava pensando "em URL" na string de consulta (por exemplo,? User = bob & pw = 123hackmeplz). Isso pode acabar nos logs do servidor.
Mike Graf
5
Relacionado: "Quando você chama esse URL no cliente com, por exemplo, curvatura, o nome de usuário e a senha ficam claramente visíveis na lista de processos e podem aparecer no arquivo de histórico do bash". - stackoverflow.com/a/4981309
Hawkeye Parker
1
@ zb226, o autor da pergunta mencionou especificamente a colocação das credenciais no URL.
Lambart