Saya punya beberapa alat BASH yang menggunakan mysql -e "{command}"
fungsi ini. Memasukkan kata sandi setiap kali saya menggunakan alat ini akan merepotkan, jadi, untuk menghindari kata sandi ditulis dalam file plaintext dengan kode, saya menyimpannya dalam memori (menggunakan read -s
) dan meminta BASH membacanya setiap kali menjalankan perintah.
Mysql masih berpikir kata sandi sedang dikirim melalui baris perintah (karena, dengan cara berbicara, itu adalah), dan masih memberi saya kesalahan "Menggunakan kata sandi pada antarmuka baris perintah bisa tidak aman."
Demi tujuan saya, saya tidak perlu menekan pesan ini. Yang perlu saya ketahui adalah, apa yang bisa membuatnya tidak aman? Kata sandi tidak pernah terlihat secara fisik, jadi berselancar bahu tidak dapat melakukannya dan bahkan seseorang yang menebak kata sandi SSH saya tidak akan dapat melakukannya karena disimpan dalam memori daripada dalam skrip itu sendiri. Apakah serangan pria di tengah atau sesuatu yang serupa mungkin terjadi?
~/.my.cnf
Contoh Anda dapat menentukan per host dengan melakukan[client<hostname>]
mis.[clientlocalhost]
Alat MySQL akan menggunakannya secara otomatis sehingga lebih mudah dan amanbash
membacanya ketika Anda menjalankan perintah? Jika Anda melakukannyamysql -p"$pass"
maka siapa pun dapat melihatnya dips
.Jawaban:
Siapa pun yang dapat melihat variabel lingkungan Anda (termasuk program yang Anda jalankan) dapat melihat kata sandi. Dan siapa pun yang dapat melihat proses Anda dapat melihat baris perintah yang digunakan untuk menjalankannya, termasuk parameternya.
Jadi untuk kotak yang hanya Anda masuk, risikonya mungkin tidak signifikan. Tetapi untuk serangan yang ditargetkan pada Anda secara pribadi, ini adalah vektor serangan sepele dalam skema besar hal.
sumber
~/.history
, dll