¿Puede hacer un cifrado del lado del cliente y del servidor [duplicado]

0

Estoy creando un sitio web PHP donde los usuarios, entre otras cosas, pueden iniciar sesión y realizar tareas administrativas. Para sus contraseñas, uso password_hash ($ password) y luego verifico con él, uso password_verify ($ password, $ pass_from_db).

Dado que PHP es un lenguaje del lado del servidor, la contraseña, antes de llegar al servidor, es, en ambos casos, vulnerable para el rastreo, y dado que son de texto claro, fáciles de tomar y usar por el ataque del hombre en el medio. Ya que voy a usar Ajax JS, pensé que primero usaría un cifrado de JavaScript, y luego enviaría el valor de JavaScript cifrado a través de Internet, y luego crearía el hash de la contraseña en el valor cifrado como este:

HTML | password=" 1234 " | - > JS | cifrar (" 1234 ")=" ASU'2j3) k " | - > PHP | password_hash (" ASU'2j3) k ")=" AlD23J '# sC5" P "| - > Insertado en db

HTML | password=" 1234 " | - > JS | cifrar (" 1234 ")=" ASU'2j3) k " | - > PHP | contraseña_verificar (" ASU'2j3) k ", " AlD23J '# sC5" P "-' Obtenido de db ') | ACEPTADO

¿Es una buena idea o debo enviar la contraseña como texto simple?

    
pregunta Tayler 31.10.2015 - 16:25
fuente

1 respuesta

3

Puedes, pero no deberías. No aumenta la seguridad, ya que la contraseña cifrada del lado del cliente se convierte en el punto de ataque.

El otro problema con el cifrado del lado del cliente es que si no está utilizando un canal cifrado para entregar el código, no hay forma de evitar que se modifique en la ruta. Contraseña para ellos, así como el cifrado para usted.

La mejor práctica para esta situación es usar un canal encriptado para enviar los detalles de autenticación - https, en otras palabras. Esto garantiza que solo su servidor pueda leer la contraseña, y luego puede verificarla en el código del lado del servidor.

    
respondido por el Matthew 31.10.2015 - 16:48
fuente

Lea otras preguntas en las etiquetas