A palavra “curl -u username: password http://example.com” é segura?

28

curl -u username:password http://example.com é seguro?

Se não, você pode dar uma breve explicação de como alguém poderia obter sua senha?

    
por JDiMatteo 26.05.2015 / 22:01

5 respostas

52

Não é seguro, porque cURL padroniza a autenticação básica onde o protocolo HTTP envia sua senha Texto claro. Quando você especifica a string username:password , ela é convertida em uma string BASE64 no cabeçalho HTTP:

GET / HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Accept: text/html
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=

Qualquer pessoa capaz de interceptar seu tráfego HTTP (seu provedor, qualquer pessoa acessando o mesmo AP sem fio, como você, etc.) poderá recuperar a senha simplesmente usando um conversor BASE64 online .

O protocolo HTTPS melhorará as coisas estabelecendo uma conexão criptografada antes que este cabeçalho seja enviado, evitando que a senha seja revelada. No entanto, isso se aplica somente se o usuário prestar atenção quando solicitado a confirmar certificados desconhecidos, autorizar exceções de segurança e assim por diante.

Observe que os argumentos de comando podem estar disponíveis para outros usuários na mesma máquina, por exemplo, ps -ef , / sistema de arquivos proc, em seu histórico bash, e em seu log de terminal (obrigado pelo comentário de @ Lambert, observando isso). O cURL em algumas plataformas tenta ocultar a senha, por exemplo, com ps -ef , é provável que você veja espaço em branco em vez de uma senha. No entanto, em vez de passar a senha como um argumento de linha de comando, é melhor ter cURL solicitando diretamente uma senha, conforme discutido no cURL faq .

    
por 26.05.2015 / 22:06
24

Não é seguro. Os parâmetros da linha de comando são visíveis para todos os usuários.

    
por 26.05.2015 / 22:06
1

Isso pode ser feito de uma maneira mais segura usando o parâmetro --netrc-file.

  1. Crie um arquivo com 600 permissões

Por exemplo: vi / root / meu-arquivo

machine example.com

faça login USERNAME

senha PASSWORD

Salve e feche o arquivo

  1. Use o abaixo para acessar o URL com nome de usuário e senha.

curl -netrc-file / root / meu-arquivo link

  1. Feito
por 15.02.2018 / 02:59
0

É inseguro ao usar o esquema HTTP. Para torná-lo seguro, você deve usar HTTPS.

Para ocultar a senha de aparecer no histórico de comandos, forneça apenas o nome do usuário. Curl pedirá senha, se não for fornecido no comando.

    
por 29.09.2015 / 08:02
0

Resposta curta não é ... mas ....

Se não houver opções do lado do servidor, você poderá proteger a segurança.

  1. Se esta for uma intranet local, então isole o domínio de broadcast e faça não use WiFi ou qualquer rádio.
  2. Como Shameer diz, use um arquivo .netrc, mantenha os valores fora do código.
  3. Se você acredita que a memória é segura, use o ambiente vars. $ PSWD.
  4. Se isso é automação, execute a partir do crontab do root.
  5. ... em um contêiner.
  6. ... de uma VM com um disco criptografado.

Nada disso é menos seguro que um navegador usando HTTP.

    
por 26.04.2018 / 01:42

Tags