Di bawah ini adalah gambar dari proses yang saya ambil untuk membuat pengguna di bash di Linux.
Saya mengerti bahwa kata sandi tidak boleh ditampilkan untuk tujuan keamanan, tetapi yang saya maksud adalah, mengapa tanda bintang (atau karakter yang saya masukkan) tidak muncul?
command-line
terminal
password
passwd
Kaiylar
sumber
sumber
Jawaban:
Karena itulah cara kami melakukan berbagai hal di * nix land. :) Ini memberikan sedikit keamanan ekstra dengan tidak menampilkan banyak tanda bintang. Dengan begitu, seseorang yang melihat layar Anda tidak dapat melihat panjang kata sandi Anda.
Tapi saya harus akui itu agak menakutkan tidak mendapatkan umpan balik ketika Anda memasukkan kata sandi, terutama jika Anda memiliki keyboard yang buruk. Jadi sebagian besar dialog kata sandi GUI pada sistem * nix memberi Anda semacam umpan balik, misalnya menggunakan tanda bintang, atau lebih umum ⬤. Dan beberapa bahkan menampilkan setiap karakter saat Anda mengetiknya, tetapi kemudian segera menggantinya dengan a
*
atau but, tetapi itu tidak begitu baik jika seseorang melihat dari balik bahu Anda. Atau jika mereka memiliki perangkat yang dapat mengambil & mendekode sinyal video yang dikirim dari komputer Anda ke monitor Anda.sumber
stty -echo
Apa cara paling sederhana untuk menyembunyikan input pengguna?
Tidak menampilkannya!
Menyembunyikan kata sandi saat sedang diketik adalah tradisi lama. Masuk akal dari perspektif keamanan dalam sebagian besar konteks: jika seseorang melihat dari atas bahu Anda, Anda tidak ingin membuatnya mudah untuk melihat apa yang Anda ketikkan. (Beberapa pedoman keamanan modern misalnya 1 2 3 4 5 merekomendasikan untuk memiliki opsi untuk membuat kata sandi terlihat, karena hal itu memungkinkan pengguna untuk dapat memilih kata sandi yang lebih rumit dan memiliki keyakinan bahwa mereka tidak akan menghabiskan waktu mereka memperbaiki kata sandi yang tidak terlihat. kesalahan ketik. Risiko terbesar bukan berselancar bahu, itu menebak dengan kasar, mungkin offline.)
Setelah memutuskan bahwa kata sandi harus disembunyikan, pelaksana harus memutuskan bagaimana melakukannya. Terminal memiliki mode di mana input pengguna ditampilkan (echo on), dan mode di mana input pengguna tidak ditampilkan (echo off). Mode gema off memiliki keberadaan intrinsik dengan cara: itu adalah mode di mana terminal tidak melakukan pekerjaan ekstra input gema pengguna. Mode ini juga harus ada untuk aplikasi di mana mengetikkan kunci tidak memasukkan karakter itu, tetapi sebaliknya meminta beberapa pintasan aplikasi yang terikat ke kunci itu. Jadi perintah seperti
passwd
hanya mengatur terminal ke mode gema saat mereka sedang membaca kata sandi.Mencetak tanda bintang untuk setiap karakter akan membutuhkan kerja implementasi tambahan hanya untuk keuntungan yang relatif kecil, yang
passwd
belum ingin dilakukan oleh pelaksana perintah. Tidak ada mode terminal untuk mencetak tanda bintang karena itu akan menjadi fitur yang sangat khusus, hanya berguna ketika memasukkan kata sandi.Omong-omong, jika Anda ingin melihat kata sandi ketika mengubahnya, Anda dapat menggunakan
cat | passwd
(setidaknya pada beberapa sistem - beberapa versipasswd
memerlukan opsi seperticat | passwd --stdin
dan beberapa tidak menerima ini sama sekali). (Anda bahkan dapat melakukannya{ echo 'current password'; echo 'new password'; echo 'new password'; } | passwd
, tetapi jangan lakukan itu: itu akan menyimpan kata sandi dalam sejarah shell, yang darinya ada banyak risiko bocor.) Mengaturnya dengan perintah yang membaca kata sandi dari terminal daripada apa pun yang ada input standar mereka, sepertisudo
ataussh
, lebih kompleks; jika Anda memiliki GUI, Anda dapat menggunakan ssh-askpass yang menunjukkan berapa banyak karakter yang Anda ketikkan (SUDO_ASKPASS=/usr/bin/ssh-askpass sudo -A
untuk sudo; untuk ssh itu rumit ketika Anda memintanya dari terminal).sumber
Membuat kata sandi tidak terlihat membuatnya lebih aman, karena panjang kata sandi tidak dapat dilihat oleh orang lain. Ini menghindari risiko orang lain mencoba menebak kata sandi dari panjangnya dan masuk ke akun Anda.
sumber