Misalkan saya menggunakan sha1passuntuk menghasilkan hash dari beberapa kata sandi sensitif pada baris perintah. Saya dapat menggunakan sha1pass mysecretuntuk menghasilkan hash mysecrettetapi ini memiliki kelemahan yang mysecretsekarang dalam sejarah bash. Apakah ada cara untuk mencapai tujuan akhir dari perintah ini sambil menghindari pengungkapan mysecretdalam teks biasa, mungkin dengan menggunakan passwdprompt-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.
sha1passdi 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 mysecretsedang berjalan, dan karenanya tahu apamysecretitu. (Ini hanya bekerja selama beberapa detik saat program ini benar-benar berjalan, tentu saja ...)