¿Como hacer un sistema de registro de usuario y contraseña?
Aclaro que quiero que el usuario pueda cambiar la contraseña cuando el quiera.
| |||
Respuesta: Crear sistema de login en flash Voy a asumir que ya tienes una tabla MySQL (o del gestor que sea) en tu servidor (local o remoto). El archivo PHP creara un archivo XML al vuelo, el cual utilizara para enviar a Flash con el estado de la autentificacion (algo asi como AJAX, pero este seria AFAX.. Asynchronous Flash and XML jaja). Crea un archivo php con el siguiente codigo:
Código PHP:
Cambia $hostname, $username, $password y $database a los valores correspondientes en tu sistema.Ver original Basicamente, genera un XML que regresa a flash el ID del usuario si es que existe, de lo contrario regresa un -1. Flash basado en esta informacion decide dejar pasar al usuario, o decirle que su nombre de usuario o contrasena es incorrecto. El codigo en flash seria asi:
Código Actionscript:
Ver original Como menciono anteriormente, doy por hecho que ya tienes instalado un gestor de base de datos con una tabla de usuario creada. Utilizo prepared statements para evitar SQL Injection, incluso aunque un posible atacante envie inputs como "-- OR 1" , al utilizar prepared statements; MySQL ya sabe de antemano cual es la consulta a ejecutar, asi que literalmente buscara "-- OR 1" en la base de datos, y no se ejecutara como SQL bajo ninguna circunstancia. Sin embargo, para evitar basura, la clase TextField, tiene un metodo restrict, en donde puedes especificar una expresion regular para sanitizar la informacion proveida por el usuario. usuario.restrict = [a-z]; restringe a que el input en el campo de texto de usuario, sean solamente letras de la 'a' a la ' z' (en minusculas). Escribi un tutorial sobre esto en mi pagina web, es algo diferente mi tutorial simplemente hago consultas a la base de datos, pero con menores modificaciones como puedes ver hice un sistema de login :) Te dejo mi web, por si quieres echarle un vistazo ;) http://www.alanchavez.com Aqui te dejo dos tutoriales relacionados al tema: http://alanchavez.com/tutorial-como-...esarla-con-php http://alanchavez.com/tutorial-de-co...sql-php-xml-hd Desventaja: El nombre de usuario y contrasena se envian en texto plano hacia PHP, asi que es vulnerable a un ataque de "man in the middle", alguien escuchando el trafico entre una computadora y un servidor. Si quieres agregar una capa de seguridad, utilizaria un algoritmo de encriptacion, con un secreto, como SHA256 para mayor seguridad, sin embargo no se si exista una libreria de encriptacion para AS3. SHA256 encripta tu password con un secreto (una clase de contrasena), en php recibes la contrasena encriptada y la desencriptas con el mismo secreto. Es mala practica de programacion, guardar los secretos en la base de datos. No lo pongas en Flash en texto plano, porque Flash se puede desencriptar y van a ver tu secreto, por lo tanto no tiene punto la "molestia" de encriptar el password. Yo lo pondria en el servidor, FUERA DEL WEBROOT, con permisos solamente de lectura para el usuario y grupo de apache. Lo que yo haria para agregar una capa de seguridad extra seria: 1) hacer un URLRequest del archivo PHP donde se encuentra el secreto, y pasarlo a flash. 2)Con el secreto dentro de flash; encriptar la contrasena del usuario, y pasar SOLAMENTE el usuario y contrasena al archivo de autentificacion. Posteriormente en el script PHP donde se verifica si el usuario existe o no: 1) Leer el archivo PHP donde se encuentra el secreto 2) Desencriptar la contrasena del usuario 3) Codificarla con MD5 (en realidad se recomienda PBKDF2, ya que MD5 ya no se considera seguro) 4) Tratar de encontrar a un usuario, con esa contrasena. Pero eso ya te lo dejo a tu criterio, lo veo dificil principalmente porque yo no conozco ninguna libreria de criptografia para Flash, sin embargo; no dudo que pueda existir.
__________________ Visita mi blog donde escribo acerca de desarrollo web y emprendimiento Sigueme en Twitter: @alanchavezv |
Etiquetas: |