Misalkan saya menggunakan sha1pass
untuk menghasilkan hash dari beberapa kata sandi sensitif pada baris perintah. Saya dapat menggunakan sha1pass mysecret
untuk menghasilkan hash mysecret
tetapi ini memiliki kelemahan yang mysecret
sekarang dalam sejarah bash. Apakah ada cara untuk mencapai tujuan akhir dari perintah ini sambil menghindari pengungkapan mysecret
dalam teks biasa, mungkin dengan menggunakan passwd
prompt-style?
Saya juga tertarik dengan cara umum untuk melakukan ini untuk meneruskan data sensitif ke perintah apa pun. Metode akan berubah ketika data sensitif dilewatkan sebagai argumen (seperti dalam sha1pass
) atau pada STDIN ke beberapa perintah.
Apakah ada cara untuk menyelesaikan ini?
Sunting : Pertanyaan ini menarik banyak perhatian dan ada beberapa jawaban bagus yang ditawarkan di bawah ini. Ringkasan adalah:
- Sesuai jawaban Kusalananda , idealnya seseorang tidak perlu memberikan kata sandi atau rahasia sebagai argumen baris perintah ke utilitas. Ini rentan dalam beberapa cara seperti yang dijelaskan olehnya, dan seseorang harus menggunakan utilitas yang dirancang lebih baik yang mampu mengambil input rahasia pada STDIN
- Jawaban @ vfbsilva menjelaskan cara mencegah hal-hal agar tidak disimpan dalam bash history
- @Jawab Jonathan menjelaskan metode yang sangat baik untuk mencapai ini selama program dapat mengambil data rahasianya pada STDIN. Karena itu, saya telah memutuskan untuk menerima jawaban ini.
sha1pass
di OP saya hanya sebuah contoh, tetapi diskusi telah menetapkan bahwa ada alat yang lebih baik yang mengambil data pada STDIN. - seperti @R .. mencatat dalam jawabannya , penggunaan ekspansi perintah pada variabel tidak aman.
Jadi, secara ringkas, saya telah menerima jawaban @ Jonathan karena ini adalah solusi terbaik mengingat Anda memiliki program yang dirancang dengan baik dan berperilaku baik. Meskipun melewatkan kata sandi atau rahasia sebagai argumen baris perintah pada dasarnya tidak aman, jawaban lain menyediakan cara untuk mengurangi masalah keamanan yang sederhana.
sha1pass mysecret
sedang berjalan, dan karenanya tahu apamysecret
itu. (Ini hanya bekerja selama beberapa detik saat program ini benar-benar berjalan, tentu saja ...)