curl -u username:password http://example.com
は安全ですか?
そうでない場合は、誰かがあなたのパスワードを取得する方法について簡単な説明をすることができますか?
CURL はデフォルトでHTTPプロトコルがクリアテキストでパスワードを送信する基本認証 に設定されているため、安全ではありません。 username:password
文字列を指定すると、HTTPヘッダーの BASE64 文字列に変換されます。
GET / HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Accept: text/html
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
HTTPトラフィックを傍受できる人(プロバイダ、自分と同じワイヤレスAPにアクセスする人など)は、オンラインの オンラインBASE64コンバータ を使用するだけでパスワードを回復できます。
HTTPSプロトコルは、このヘッダーが送信される前に暗号化された接続を確立し、パスワードが漏れるのを防ぎます。ただし、これは、未知の証明書の確認、セキュリティの例外の承認などを求められたときにユーザーが注意を払う場合にのみ適用されます。
コマンド引数は、同じマシン上の他のユーザーが参照できるようになっている場合があります。 ps -ef
、/ procファイルシステム、あなたの中のbash履歴、そしてあなたの端末ログ(これに注目してくれた@ Lambertのコメントに感謝します)。一部のプラットフォームではcURLがパスワードを隠そうとしているため、たとえばps -ef
を使用すると、パスワードの代わりに空白が表示される可能性があります。ただし、 cURL faq で説明したように、コマンドライン引数としてパスワードを渡す代わりに、cURLで直接パスワードの入力を求める方が適切です。
安全ではありません。コマンドラインパラメータはすべてのユーザーに表示されます。
これは--netrc-fileパラメータを使用することでより安全な方法で行うことができます。
例:vi/root/my-file
マシンexample.com
ログインUSERNAME
パスワードPASSWORD
ファイルを保存して閉じる
curl --netrc-file/root/my-file http://example.com
HTTPスキームを使用する場合は安全ではありません。安全にするには、HTTPSを使用してください。
パスワードをコマンド履歴に表示しないようにするには、ユーザー名のみを入力します。コマンドにコマンドが指定されていない場合、Curlはパスワードを要求します。
簡単な答えはノーです...しかし……。
サーバー側のオプションがない場合は、セキュリティを強化することができます。
これらのどれもが、HTTPを使用するブラウザよりも安全性が劣るものではありません。