Ahora mismo, podríamos hacer algo como password varchar(72),
al definir una columna de contraseña, por ejemplo con BCrypt. Pero hay mucha gente que no lo hace de manera muy efectiva. Tal vez solo pongan el texto sin formato, o un solo hash md5 sin sal, o alguna otra estrategia terrible.
Pero prácticamente todos estos delincuentes siguen utilizando bases de datos. Entonces, ¿por qué este tipo de funcionalidad no se incluye en las bases de datos? Algo como mypass password('BCrypt:10'),
y acceso como INSERT INTO people(name, mypass, other_data) VALUES(?, ?, ?)
que tomaría la contraseña de texto sin formato del usuario y la pasaría a la tabla. Pero la tabla almacenaría el valor hash de BCrypt apropiado. Luego, podríamos hacer algo como SELECT other_data FROM people WHERE name = ? AND mypass = ?
: esto nuevamente tomaría el texto simple del inicio de sesión del usuario, pero cargaría la sal y realizaría el análisis para determinar si la contraseña fue un éxito o no.
Cuando se trata de almacenar datos, utilizamos bases de datos en lugar de archivos sin formato o lo que tenemos porque son confiables, probados y simples (en comparación con los nuestros). Ya que está claro que en el mundo salvaje hay innumerables lugares donde el almacenamiento de contraseñas no es confiable y no se ha probado, ¿por qué este tipo de almacenamiento de datos no se realiza por la propia base de datos?