Tengo algunas herramientas BASH que usan la mysql -e "{command}"
función. Ingresar la contraseña cada vez que uso estas herramientas sería una molestia, por lo tanto, para evitar que la contraseña esté escrita en un archivo de texto sin formato con el código, la almaceno en la memoria (usando read -s
) y hago que BASH la lea cada vez que ejecuta los comandos.
Mysql todavía piensa que la contraseña se está enviando a través de la línea de comando (porque, en cierto modo, lo es), y aún me da el error "Usar una contraseña en la interfaz de la línea de comando puede ser inseguro".
Para mis propósitos, no necesito suprimir este mensaje. Lo que necesito saber es, ¿qué es lo que podría hacerlo inseguro? La contraseña nunca es físicamente visible, por lo que navegar por los hombros no podría hacerlo e incluso alguien que adivinó mi contraseña SSH no podría hacerlo, ya que está almacenada en la memoria en lugar de en los propios scripts. ¿Es posible un ataque de hombre en el medio o algo similar?
~/.my.cnf
Ejemplo Se puede especificar por host haciendo[client<hostname>]
por ejemplo,[clientlocalhost]
herramientas de MySQL lo utilizará de forma automática por lo que es más fácil y más segurobash
leído cuando ejecutas el comando? Si lo hacesmysql -p"$pass"
, cualquiera puede verlops
.Respuestas:
Cualquiera que pueda ver sus variables de entorno (incluidos los programas que ejecuta) puede ver la contraseña. Y cualquiera que pueda ver sus procesos puede ver la línea de comando utilizada para ejecutarlos, incluidos los parámetros.
Entonces, para un cuadro en el que solo inicias sesión, el riesgo es probablemente insignificante. Pero para un ataque dirigido a usted personalmente, este es un vector de ataque trivial en el gran esquema de las cosas.
fuente
~/.history
, etc