Nunca debes manter un contrasinal en texto plano mentres confirmas un usuario ou fas algo semellante.
Dado que moitas persoas usan o mesmo contrasinal, se un atacante descobre unha base de datos de contrasinais sen cifrar, pódense usar facilmente xunto con correos electrónicos coincidentes para entrar no sitio web ou conta vinculado e mesmo para tentar acceder a outras contas.
Os contrasinais adoitan ser clasificados hoxe en día cando se proporciona un contrasinal. Aconséllase hash con sal e manter o sal xunto co contrasinal hash.
O salgado pode parecer un dos pasos dunha receita de hash browns, pero en criptografía, refírese a engadir datos aleatorios á entrada dunha función hash para garantir que o hash sempre proporcionará un resultado único aínda que as entradas sexan idénticas.
Como resultado, o hash distintivo creado engadindo o sal pode defendernos de varios métodos de ataque, incluídos os asaltos de táboas de hash, ao tempo que sufoca os intentos fóra de liña de dicionario e forza bruta.
Aquí, coa axuda de fragmentos de código, demostraremos como usar 'bcrypt' para protexer os seus contrasinais.
Entón, que é 'bcrypt'?
Bcrypt é unha biblioteca de hash que admite varios idiomas e ofrece un cifrado especial de contrasinais. Para aumentar a seguridade do teu contrasinal, produce automaticamente caracteres aleatorios adicionais (sal) ao cifrar a cadea.
Tamén pode escoller definir cantos caracteres adicionais desexa engadir a unha cadea entrante.
A biblioteca bcrypt só le o código de bytes, non as cadeas en bruto. Polo tanto, antes de enviar unha cadea de contrasinal entrante a bcrypt para o cifrado, primeiro debes codificala.
Cifrar e codificar non son o mesmo. Só se asegura de que unha cadea sexa lexible pola máquina antes de ser tapada por unha técnica de cifrado.
Usando bcrypt para cifrar un contrasinal en Python
Python fai que o cifrado do contrasinal de bcrypt sexa sinxelo. Concentrarémonos en facelo sen a axuda dun marco. Pero non te preocupes, se entendes como gardar as entradas dos usuarios e lelas desde a base de datos, o procedemento é o mesmo nos frameworks.
instalación
Só tes que configurar un ambiente virtual Python e despois utilizar un IDE como PyCharm. A biblioteca debe instalarse primeiro:
Contrasinal de cifrado
Vexamos como usar bcrypt para cifrar un texto despois de que se instalou:
O código Python mencionado anteriormente executa e produce unha cadea de bytes cifrada. Pero cada vez que executas o script, o resultado é diferente. Bcrypt usa este método para asegurarse de que cada usuario teña un contrasinal cifrado especificamente.
Iso, por certo, é para o cifrado do contrasinal.
Comparación e confirmación de contrasinal mediante Bcrypt
Que pasa se queres gardar o contrasinal hash e comprobar máis tarde se coincide co contrasinal que un usuario enviou para a autenticación?
Iso é sinxelo. Só se debe comparar o contrasinal de autenticación coa entrada da base de datos (ou na memoria neste caso).
O contrasinal de autenticación tamén debe codificarse antes de comparalo co da base de datos porque bcrypt só pode ler cadeas de bytes. Basicamente, comparará unha entrada de autenticación codificada co contrasinal hash codificado que ten actualmente na súa base de datos.
Probemos isto usando entradas de Python ficticias:
Ao executar o código anteriormente mencionado, solicitarase un novo contrasinal. Isto gárdase na memoria Python. Na sección de autenticación, introducirá o mesmo contrasinal, que é privado para vostede.
Se se compara o contrasinal co que se cifraba previamente e gardou a coincidencia, Python emite unha mensaxe de éxito.
Se non, imprímese a mensaxe de erro e despois engádese a frase else.
A idea fundamental é idéntica á de rexistrarse e, a continuación, proporcionar un contrasinal a unha base de datos para a súa autenticación.
Conclusión
Aínda que simplemente usamos contrasinais cifrados para mostrar como funciona bcrypt na memoria curta de Python, a súa aplicabilidade real reside nas aplicacións de base de usuarios.
Non obstante, este artigo mostra os métodos esenciais para organizar o teu código para logralo, mesmo en circunstancias do mundo real.
Por exemplo, se está a usar Flask, pode proporcionar os campos de rexistro e autenticación a través de formularios web separados en lugar de entradas.
Por suposto, mentres comparas contrasinais, lerás dunha base de datos que contén contrasinais cifrados que se gardan no mundo real.
Jona Nitsch
Grazas por esta sinxela e sinxela explicación,
Isto axudoume moito no meu proxecto actual.
Creo que é moi bo que o código de exemplo estea limitado ao mínimo e non se sobrecargue como tantas outras explicacións.
Cumprimento