Encriptar contraseñas y hacerlas más seguras con PHP

En este artículo veremos como encriptar de forma más segura las contraseñas de los usuarios en nuestra base de datos.


¿Para que debemos encriptar las contraseñas?


Debemos encriptar las contraseñas de los usuarios para mantener – o tratar por lo menos – la seguridad de sus datos.

La gente tiene el hábito o mal hábito de usar la misma contraseña para todas sus cuentas, desde su cuenta en facebook hasta la de paypal o peor, la de su cuenta bancaria. Nuestra obligación es proteger ese dato fundamental por si desafortunadamente nuestra base de datos cae en las manos equivocadas, cómo las de un empleado mal intencionado o la de un hacker.

Comencemos


Las funciones hash md5() y sha1() hasta hace poco fueron un estándar, pero por la rapidez en la extracción de datos por fuerza bruta, dictionary o rainbow tables ya no se recomiendan para la codificación de contraseñas. El mismo creador de MD5 ha escrito en su blog que “la codificación md5() no es segura” y opten por algoritmos como SHA-2.

La función hash que utilizaremos será crypt() que soporta de forma nativa varios algoritmos. Por defecto usa la codificación MD5 pero por razones de seguridad usaremos Blowfish.

Verificar si mi versión de PHP soporta Blowfish


El algoritmo Blowfish está disponible a partir de la versión 5.3 de PHP. Si quieres comprobar que tienes soporte para Blowfish puedes colocar este código en un archivo PHP: Si podemos usar Blowfish pasaremos a codificar la contraseña, en el caso de que no, tendremos que instalar la última versión de PHP.

Codificando la contraseña


Como decía antes, la función hash que utilizaremos para codificar nuestra contraseña será crypt(). Por defecto, crypt() usaba el algoritmo DES aunque en las últimas versiones de PHP paso a MD5. Para forzar que crypt() utilice el algoritmo Blowfish debemos colocar un salt especial, si la función no reconoce el salt que escribimos, el hash resultante estará codificado en MD5.

El salt para Blowfish debe ser escrito de la siguiente manera: $2a$, $2x$ o $2y$ + 2 números de iteración entre 04 y 31 + 22 caracteres que pueden ser ./1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.

Ejemplo: $2x$07$./f4af7kJi1jdaxlswE34$

Para que nuestra contraseña sea más segura, vamos a crear una función que realice un salt aleatorio. El valor que se generará aleatoriamente para cada hash serán los últimos 22 caracteres. Para crear el hash con la función que recién creamos solamente tenemos que escribirlo de la siguiente manera

Comprobar la contraseña


Cuando el usuario se registra se guarda en la base de datos su nombre de usuario y el hash asociado a su contraseña. Cuando éste va a loguearse completará el campo nombre de usuario y contraseña, si el hash de esta contraseña ingresada en el formulario de login coincide con el hash asociado al nombre de usuario guardado en la base de datos en el momento del registro, el usuario iniciará sesión.

Con la función crypt() reconocemos que el hash en la base de datos fue creado con Blowfish.

¿Qué es salt y para que sirve?


Salt en resumen sería una linea de texto que se añade – en este caso – a una contraseña para que sea más compleja de descifrar. Les dejo un ejemplo simple así les queda más gráfico: El resultado sería un hash que contiene el salt que creamos más la contraseña y eso es todo.

Más información
Loading...
Nombre

Accesibilidad Actualidad Adobe Flash AirPods Amazon Amazon Music Unlimited Amazon Protect AMD Android Android 6.0 Marshmallow Android Auto Android Nougat Android Things Android Wear Animación Anti-Virus Aplicaciones Aplicaciones Web App Store Apple apple ipad 3 Audio AVG Base64 Bases de datos Black Friday BlackBerry BlackBerry 10 Blizzard Blogger Bromas Ciencia Clonaciones CMS Codificación Código Fuente Códigos Compras por Internet Consolas Contraseñas Cookies Cross site scripting Darknet Dart DDoS Deface Defacing Desarrolladores Diseño Web DOS Drivers Drones Experiencia Exploit Extensiones Exynos 9 Facebook Facebook Events Facebook Messenger fingerprinting Firefox 12 Fraudes Gadgets Gaming General GitHub Gmail Google Google Allo Google Analytics Google App Maker Google Chrome Google Drive Google Flights Google Imágenes Google Maps Google Pixel Google Play Google+ Gráficas Hacker Hackers Hacking Hacks Hardware HD Herramientas HI5 Hijacking htaccess HTML humans.txt Humor Gráfico Infección Informática Ingeniería Social Instagram Intel Internet Inyeccion iOS iOS 10 ip iPad 3 Iphone iPhone 7 iPhone 8 Javascript Juegos Kurt Cobain Land LinkedIn Linux Live HTTP headers Malware Mantenimiento Memorias Memorias USB MicroSD Microsoft Móviles Mozilla Firefox Música MySQL Navegadores Nexus Nintendo Nintendo NX Nintendo Switch Notebooks Noticias NVIDIA Ocio Opera Ordenador Overclocking Passwords PayPal Personal Phishing PHP Phreaking Plugins Portatiles Privacidad Procesadores Programación Programas Qualcomm Ransomware Realidad Virtual Redes Inalambricas Redes Sociales Redes y Conexiones Routers Samsung Samsung Galaxy Note 8 Samsung Galaxy S8 SD Seguridad Seguridad Informática SEO Servicios Web Sesiones Web Sistemas Operativos Skype Smartphones SMTP Flood Snap Inc Snapchat Snapdragon Snooping Software Sonico Sony Sony Xperia Source routing Spectacles Spotify Steam Steve Jobs TeamViewer Teclado Tecnología Telefonía Telegram Tips Tp-Link Tráfico Web Trailers Trasteando Troyanos Trucos Tutoriales Twitter Uber Ultrabooks USB Utilidades VBScript vBulletin Video Streaming VideoJuegos Videos Vídeos Virus Vulnerabilidades Vulnerabilidades Web Web WhatsApp Wifi Windows Windows 10 Windows 7 Windows 8 Windows 8.1 Windows Live Windows XP WordPress XBOX 360 XSS Yahoo! Youtube
false
ltr
item
Carluys Blog: Encriptar contraseñas y hacerlas más seguras con PHP
Encriptar contraseñas y hacerlas más seguras con PHP
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidMv-WpXiK0E-MYqhQRsf05zVyGico7Hmn4gQFD4CKZSQJitip9gfEvjZdoRudkHhl4w9iD_l8ZMzDvQz5pLI9XAzCIPQCSaKKGsoOVbEwT-Cl8xf6u3D4tPVKfVnGZ90HDbOveUqAZ9p3/s400/seguridadpassword.jpg
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidMv-WpXiK0E-MYqhQRsf05zVyGico7Hmn4gQFD4CKZSQJitip9gfEvjZdoRudkHhl4w9iD_l8ZMzDvQz5pLI9XAzCIPQCSaKKGsoOVbEwT-Cl8xf6u3D4tPVKfVnGZ90HDbOveUqAZ9p3/s72-c/seguridadpassword.jpg
Carluys Blog
https://carluys.blogspot.com/2012/12/encriptar-contrasenas-y-hacerlas-mas.html
https://carluys.blogspot.com/
https://carluys.blogspot.com/
https://carluys.blogspot.com/2012/12/encriptar-contrasenas-y-hacerlas-mas.html
true
5177014300366239033
UTF-8
Not found any posts Not found any related posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU Tag ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Contents Ver también relacionados Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS CONTENT IS PREMIUM Please share to unlock Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy