Jika Anda menggunakannya di terminal, ingatkah Anda bahwa kedua kredensial disimpan dalam sejarah bash?
Francisco Tapia
15
Perintah seperti itu tidak aman karena pengguna lain mungkin menggunakan ps -efuntuk melihat proses mana yang sedang berjalan. Ketika Anda curl -u username:password http://example.communcul dalam daftar, tujuan, nama pengguna, dan kata sandi Anda dikompromikan.
Itu tidak aman, karena cURL default ke otentikasi dasar di mana protokol HTTP mengirim kata sandi Anda dalam teks yang jelas. Saat Anda menentukan username:passwordstring, itu akan dikonversi ke string BASE64 di header HTTP:
Siapa pun yang dapat mencegat lalu lintas HTTP Anda (penyedia Anda, siapa pun yang mengakses AP nirkabel yang sama seperti Anda, dll.) Akan dapat memulihkan kata sandi hanya dengan menggunakan konverter BASE64 online .
Protokol HTTPS akan membuat segalanya lebih baik dengan membuat koneksi terenkripsi sebelum header ini dikirim, mencegah kata sandi terungkap. Namun, ini hanya berlaku jika pengguna memperhatikan ketika diminta untuk mengkonfirmasi sertifikat yang tidak dikenal, mengesahkan pengecualian keamanan dan sebagainya.
Perhatikan bahwa argumen perintah mungkin tersedia untuk pengguna lain di mesin yang sama untuk melihat, misalnya ps -ef, / sistem file proc, di riwayat bash Anda, dan di log terminal Anda (terima kasih atas komentar @ Lambert yang memperhatikan hal ini). cURL pada beberapa platform mencoba menyembunyikan kata sandi, jadi misalnya dengan ps -efAnda cenderung melihat ruang kosong alih-alih kata sandi. Namun, daripada meneruskan kata sandi sebagai argumen baris perintah, memiliki cURL secara langsung meminta kata sandi lebih baik, seperti yang dibahas pada faq cURL .
Bahkan jika Anda berada di platform di mana curl berhasil menimpa argumennya sendiri untuk menyembunyikan data ps, ada periode saat memulai sebelum menimpa dilakukan di mana konten rentan.
Charles Duffy
Bagaimana dengan otentikasi digest? Bukankah curl menggunakannya secara default?
RR
2
Otentikasi @rr Digest sedikit lebih baik, karena tidak mencegah serangan man-in-the-middle, jadi Anda masih lebih baik menggunakan HTTPS.
Dmitry Grigoryev
1
@ rr Bagaimana Anda menegaskan bahwa StartSSL tidak dipercaya oleh sebagian besar browser ? Apakah Anda berharap banyak pengguna Windows 95 atau Firefox 1.5?
Menggabungkan dengan @Dmitry Grigoryev menjawabnya bisa jadi yang paling akurat.
Francisco Tapia
1
Ya, saya benar-benar merindukan sebagian besar masalah yang harus saya akui.
Dmitry Grigoryev
perintah bisa menjadi bagian dari skrip yang hanya dapat dibaca oleh pengguna ...
Pete
2
@Pete baris perintah dari program yang dijalankan (apakah dimulai dari skrip atau di terminal) biasanya terlihat oleh semua pengguna melalui psperintah dan /procsistem file. Jika perintah selesai dengan cepat, risikonya berkurang, tetapi masih ada.
RBerteig
2
@Pete Answers tidak seharusnya eksklusif, mereka saling melengkapi. Jadi tidak apa-apa untuk jawaban kedua untuk menghilangkan ancaman yang dijelaskan di pertama, lebih tepatnya, akan berlebihan untuk mengulanginya. Dan saya tidak akan menyebut pernyataan itu salah karena itu tidak benar dalam setiap kasus.
Dmitry Grigoryev
1
Ini bisa dilakukan dengan cara yang lebih aman dengan menggunakan parameter --netrc-file.
Buat file dengan 600 izin
Sebagai contoh: vi / root / my-file
mesin example.com
masuk USERNAME
kata sandi PASSWORD
Simpan dan Tutup file
Gunakan di bawah ini untuk mengakses URL dengan Nama Pengguna dan Kata Sandi.
Tidak aman saat menggunakan skema HTTP. Untuk membuatnya aman, Anda harus menggunakan HTTPS.
Untuk menyembunyikan kata sandi agar tidak muncul dalam riwayat perintah, hanya berikan nama pengguna. Curl akan meminta kata sandi, jika tidak disediakan dalam perintah.
ps -ef
untuk melihat proses mana yang sedang berjalan. Ketika Andacurl -u username:password http://example.com
muncul dalam daftar, tujuan, nama pengguna, dan kata sandi Anda dikompromikan.Jawaban:
Itu tidak aman, karena cURL default ke otentikasi dasar di mana protokol HTTP mengirim kata sandi Anda dalam teks yang jelas. Saat Anda menentukan
username:password
string, itu akan dikonversi ke string BASE64 di header HTTP:Siapa pun yang dapat mencegat lalu lintas HTTP Anda (penyedia Anda, siapa pun yang mengakses AP nirkabel yang sama seperti Anda, dll.) Akan dapat memulihkan kata sandi hanya dengan menggunakan konverter BASE64 online .
Protokol HTTPS akan membuat segalanya lebih baik dengan membuat koneksi terenkripsi sebelum header ini dikirim, mencegah kata sandi terungkap. Namun, ini hanya berlaku jika pengguna memperhatikan ketika diminta untuk mengkonfirmasi sertifikat yang tidak dikenal, mengesahkan pengecualian keamanan dan sebagainya.
Perhatikan bahwa argumen perintah mungkin tersedia untuk pengguna lain di mesin yang sama untuk melihat, misalnya
ps -ef
, / sistem file proc, di riwayat bash Anda, dan di log terminal Anda (terima kasih atas komentar @ Lambert yang memperhatikan hal ini). cURL pada beberapa platform mencoba menyembunyikan kata sandi, jadi misalnya denganps -ef
Anda cenderung melihat ruang kosong alih-alih kata sandi. Namun, daripada meneruskan kata sandi sebagai argumen baris perintah, memiliki cURL secara langsung meminta kata sandi lebih baik, seperti yang dibahas pada faq cURL .sumber
ps
, ada periode saat memulai sebelum menimpa dilakukan di mana konten rentan.Itu tidak aman. Parameter baris perintah terlihat oleh semua pengguna.
sumber
ps
perintah dan/proc
sistem file. Jika perintah selesai dengan cepat, risikonya berkurang, tetapi masih ada.Ini bisa dilakukan dengan cara yang lebih aman dengan menggunakan parameter --netrc-file.
Sebagai contoh: vi / root / my-file
mesin example.com
masuk USERNAME
kata sandi PASSWORD
Simpan dan Tutup file
curl --netrc-file / root / my-file http://example.com
sumber
Tidak aman saat menggunakan skema HTTP. Untuk membuatnya aman, Anda harus menggunakan HTTPS.
Untuk menyembunyikan kata sandi agar tidak muncul dalam riwayat perintah, hanya berikan nama pengguna. Curl akan meminta kata sandi, jika tidak disediakan dalam perintah.
sumber
Jawaban singkatnya adalah tidak ... tapi ....
Jika tidak ada opsi sisi server Anda dapat memperkeras keamanan.
Tidak ada yang lebih aman dari browser menggunakan HTTP.
sumber