¿Cuál es la forma más segura de enviar datos de usuario del cliente al servidor? [cerrado]

-2

Sé que probablemente hay muchas respuestas existentes a esta pregunta, pero hasta ahora no he podido encontrar una respuesta simple y detallada.

En la aplicación de Android hay dos botones, iniciar sesión con Facebook e iniciar sesión con Google. Cuando el usuario haga clic en cualquiera de estos botones, se realizará una solicitud al fb / g + api del cliente utilizando su SDK proporcionado por fb / g + y devolverá un ID único, nombre, correo electrónico, perfil-img-url y género.

después de eso, uso el correo electrónico y la identificación del usuario para verificar si existe o no una cuenta con el correo electrónico y la identificación. Esto se hace con un script php que hace una instrucción sql preparada. si el usuario existe, el script devolverá los datos del usuario; si el usuario no existe, enviaré otra solicitud a otro script de php para que se registre con todos los detalles que recibí de la autenticación.

Me temo que hay muchos problemas de seguridad con esto. Sé que muchas aplicaciones han pasado por el mismo problema. Utilizo una identificación de 10 dígitos y el correo electrónico de los usuarios para iniciar sesión. ¿Puede explicar si existe alguna forma de que un atacante que sabe que el correo electrónico pueda iniciar sesión en la cuenta de otro usuario? El atacante también podría intentarlo varias veces porque inicia sesión en una solicitud json básica con el correo electrónico y la identificación como parámetros. Podría proteger la aplicación que evitará que los usuarios lo intenten más de unas cuantas veces, pero creo que la capacidad de un atacante de intentarlo tanto como quiera es un riesgo, cualquier sugerencia que haga más difícil que un atacante lo intente varias veces. un pequeño periodo de tiempo?

    
pregunta edwinj 17.02.2016 - 15:08
fuente

1 respuesta

1

Una vulnerabilidad importante es un ataque MiTM (Man in The Middle) en el que cualquiera que intente rastrear los paquetes entre el teléfono del usuario y la computadora que aloja su base de datos, podrá obtener las credenciales de inicio de sesión y la información sobre el host de la base de datos ( como su IP). Luego tienes ataques de inyección de SQL y XSS si no has tomado ninguna precaución al respecto. Comience utilizando POST en lugar de GET para enviar datos desde el script php a su db. Además, puede establecer una conexión cifrada entre el dispositivo móvil y el servidor mediante SSL o cifrar los datos en el dispositivo móvil con una clave pública antes de enviarlos al servidor para su descifrado. En cuanto a los ataques de inyección de SQL, asegúrese de verificar los datos que un usuario proporciona en el formulario php antes de enviarlos (use "mysql_real_escape_string ()" para ese fin). Por último, pero no menos importante, eche un vistazo a eso: enlace o algo similar para saber cómo lidiar con los ataques XSS.

    
respondido por el Chris Tsiakoulas 17.02.2016 - 15:42
fuente

Lea otras preguntas en las etiquetas