12.170 cursos gratis
8.767.349 alumnos
Facebook Twitter YouTube
Busca cursos gratis:

Curso de MySQL con PHP

Autor: Ariel Alejandro Wagner
Curso:
9/10 (2 opiniones) |1754 alumnos|Fecha publicaciýn: 10/01/2011
Envýa un mensaje al autor

Capýtulo 13:

 Sofisticación del Sistema de Sesiones

En la práctica pasada construimos un sistema de control de sesiones al que podríamos llamar básico y extremadamente sencillo. Sin embargo, carece de ciertas funcionalidades las cuales incluiremos en esta sección. No obstante, antes haremos algunas puntuaciones en determinadas fases de este nuevo sistema.

Control de Membrecía y Gestión para el Usuario

En el primer prototipo que desarrollamos, el usuario podía identificarse y acceder a su membrecía. Sin embargo, el usuario no podía registrarse como un nuevo usuario y ni tan siquiera podía cambiar o recuperar su contraseña si este la olvidaba. Si analizamos de fondo esta aplicación, el prototipo, carece de control de gestión para el usuario. En pocas palabras, parte de esta gestión debería hacerlo el administrador de la base de datos o el responsable de dicha aplicación, lo cual en términos específicos, no sería demasiado funcional para un usuario remoto.

Cabe señalar que este mecanismo primario que hemos desarrollado, podría bien cubrir otro tipo de necesidades. Por ejemplo, si el control y gestión del perfil de la membrecía debiera quedar absolutamente en manos del administrador o moderador de membrecías. Algunas empresas que tienen registrados a sus empleados, regulan esta política habitualmente. Aquí la necesidad implica que los datos de la membrecía son extremadamente sensibles y que debe haber un responsable que medie dicha gestión, es decir, el administrador del sistema y su aplicación.

En nuestro caso particular y nuevo que incluiremos en el siguiente modelo, incluye la posibilidad de que el usuario pueda gestionar algunos controles básicos y específicos de su perfil. Digo básicos, porque el control total aún lo seguirá teniendo el administrador de la membrecía. Un administrador de membrecías, podría dar de baja a perfiles que no son deseados, que hayan generado conflictos sistémicos, que no se utilizan o por otras razones o características. Por tanto, el usuario tan solo podrá darse de alta, cambiar su contraseña y acceder a su recurso.

Detalles Operativos de la Gestión de la Membrecía

A continuación voy a describir cómo funciona el nuevo prototipo que propongo en esta práctica que hará más tarde a continuación. Le sugiero que analice el siguiente diagrama de flujo.

hjg

La inclusión del módulo de decisiones múltiples resulta conceptual. El usuario ante la interfaz, puede encontrarse en algunas de las siguientes necesidades:

  • Ser miembro de la membrecía
    • Desea iniciar la sesión normalmente
    • No recuerda la contraseña, proceder a recuperarla y cambiarla si es posible
    • Desea cambiar su contraseña por razones de seguridad
  • No ser miembro de la membrecía
    • Desea poder Registrarse

Por tanto, el módulo de múltiples decisiones opta por tres opciones. Las primeras dos opciones son las que incluye el módulo y las que detalle en las viñetas. Sin embargo, existe una tercera opción y es la de no hacer nada. Resulta quizá la más evidente pero es necesaria enumerarla aquí también por una cuestión práctica y funcional. Queda claro entonces que aplicando el sentido en común, esta tercera opción, carecería de efecto.

En los casos donde el usuario decide recuperar su contraseña perdida u olvidada, incluso, en caso de registrarse, el usuario necesitará estar seguro que los datos que se le notifique sean correctos y que además sean seguros. En la práctica y por cuestiones funcionales y pedagógicas, no he incluido un módulo de seguridad. El módulo de seguridad implicaría que al usuario se le enviase los datos a su casilla de correo. De esta forma, queda en un total y absoluto secreto entre ambos, es decir, sistema y usuario. Es más, el administrador ni tan siquiera, podrá conocer la clave del usuario dado que esta está cifrada con un algoritmo que no permite descifrado. En estos instantes, la aplicación no garantiza esa seguridad operativa. Debe entender que esta práctica se trata de un desarrollo experimental para que aprenda a desarrollar sistemas como estos.

Sin embargo, por otro lado, resulta importante aplicar seguridad operativa y el uso de casilla de correo, resulta ser una excelente opción. Véase el siguiente diagrama de flujos para ver cómo se implementaría este sistema de seguridad por correo electrónico.

ghj

Herramienta para el Envío de Datos por Correo Electrónico

El servidor que soporta el motor de transacciones de transferencia de páginas Web debe incluir un módulo que administre un servidor de correo electrónico. En el modelo del servidor, es decir en el Hosting, Ud., cuenta con un motor de correo electrónico y bastará configurarlo según las recomendaciones que su Hosting le indique. Sin embargo, en su servidor local, no cuenta con esta herramienta y se hace necesario instalar un módulo adicional de administración de correo. Se trata de un servidor pequeño para propósitos de baja escala. En un caso tan particular como el que mencionamos aquí, podría ser más que suficiente utilizar una solución de tal porte. No obstante, el servidor de escala requiere de un software más sólido y es muy probable que piense si lo que su Hosting le ofrece no resulta ser mejor opción operativa. En conclusiones, deberá analizar estos aspectos detenidamente y, obviamente, según lo que Ud., pretenda hacer.

En caso que desee implementar el módulo adicional para el servidor Apache, podrá utilizar un software de administración de servidores de correos que se complementa perfectamente con el lenguaje PHP conocido con el nombre de PHP Mailer. Resulta sencillo de instalar. Finalmente, deberá configurarlo incluyendo usuarios o cuentas de correo para que pueda operarlo de forma apropiada. Lo interesante de este modelo es que Ud., puede contar con un sistema de correo que puede resultarle útil para otros desarrollos paralelos.

Integración del Correo Electrónico al Envío del Correo con los Datos

Contando con el software adecuado para administrar el servidor de correo electrónico, estará listo para enviar los datos a una cuenta de correo deseada. No obstante, la inclusión del correo implica que nuestra aplicación cambie algunos aspectos funcionales. Por empezar, se debe crear una tabla nueva que implique una serie de requisitos fundamentales, los cuales incluye la dirección de la casilla de correo y otros datos personales del usuario. Esta tabla debiera anexarse a la tabla que administra los perfiles de la membrecía. Este nexo permite tener los datos de los usuarios separados de lo que concierne a las cuentas para los usuarios. El usuario podría actualizar sus datos, como por ejemplo, su casilla de correo u otros datos adicionales presentes. A continuación analizaremos el siguiente sistema que muestro debajo de este párrafo.

ghj

La tabla auth contiene el nombre de usuario y la contraseña, por otro lado, tenemos la tabla users y sus campos. La tabla auth está relacionada con la tabla users. El campo name de la tabla auth se relaciona con el campo idName de la tabla users en forma de 1 a ∞, es decir, de uno a varios. Esta política evita que un determinado usuario de la membrecía no pueda duplicarse. La tabla users contiene otros campos más de información, como por ejemplo, el nombre apellido y el correo electrónico. El sistema se vale de esta valiosa información para poder comunicarse con el usuario en caso de ser requerirlo.

Cuando un nuevo usuario desea registrarse, inicia un proceso de alta. Deberá completar los datos sin omisiones para que el registro se complete de forma correcta. Por empezar, el nombre de usuario no podrá duplicarse, no podrá dejar en blanco la contraseña y no podrá dejar sin especificar la casilla de correos. Estos datos resultan ser obligatorios. Ahora bien, suponiendo que los datos son correctos y se han registrado correctamente, los mismos, serán útiles durante el proceso de recuperación de la contraseña. Analicemos cómo realmente funcionaría este sistema automático de envío de contraseña mediante el correo electrónico.

El usuario inicia un proceso de recuperación de su contraseña puesto que la ha olvidado. Bien, el sistema le pide que ingrese el nombre de usuario. Si el nombre es válido, un motor que genera claves de forma aleatorias proporciona una clave al azar y la almacena en la cuenta del usuario que ha sido objeto de esta operación. Una vez que la contraseña nueva generada por el motor es almacenada, se procede al envío de los datos al usuario por medio del correo electrónico. El envío consiste en dos datos fundamentales. El nombre de usuario y la contraseña nueva. El siguiente acto, bastará para el usuario, el ingreso a su cuenta de forma satisfactoria. Más tarde, el usuario podrá cambiar la contraseña nuevamente si así lo desea. El envío de los datos por correo electrónico hace que el mecanismo se conforme dentro de un escenario más privado y seguro. A continuación, muestro un extracto de código que podrá ser utilizado para el reenvío del correo con información para el usuario.

// Datos que proviene de la consulta de la base de datos

$user = "user";

$pass = "123";

// Preparar la carta - Compose

$to = "usuario@miserver.com";

$subject = "Asunto - Clave de Envío Nueva";

$headers = "From: Librería Virtual - Nueva Contraseña";

$message = "Nueva Contraseña\r\n";

$message .= "Le recordamos que hemos actualizado su contraseña nueva. A continuación le dejamos los datos.\r\n";

$message .= "Nombre de usuario: $user\r\n";

$message .= "Contraseña: $pass\r\n";

$message .= "Cualquier inconveniente, por favor, comuníquese con el administrador del sistema.";

// Enviar el correo electrónico...

mail($to, $subject, $message, $headers);

Mayor Seguridad Operativa ~ Activaciones de Cuentas

En algunos sitios para garantizar mayor seguridad se utiliza un sistema de reenvío y de activación. La activación sencillamente consiste en verificar que el correo que le ha sido enviado al usuario lo responda. Mientras que el usuario no responda al correo, el cambio se mantendrá substancialmente hasta que el usuario active el cambio. La activación permite evitar que los envíos de las nuevas contraseñas no queden de forma inconsistente, por ejemplo, que el correo enviado falle su recepción o, lo que es peor aún, que el servidor esté caído en ese. En pocas palabras, cualquier error podría resultar en fatalidad. El usuario podría perder el acceso a su membrecía. Por tanto, la activación resulta ser un proceso recomendado para asegurarse que la recuperación de la contraseña se realiza de forma satisfactoria.

El mecanismo de activación más sencillo consiste en controlar de alguna forma la afirmación por parte del usuario. Si bien, puede realizarse de muchas formas, quizá la más sencilla sería conectar un enlace adjunto al correo enviado durante la consulta de modo que el usuario haga clic sobre este enlace y se actualice en la base de datos. De esta forma, el sistema, entiende que el usuario se ha notificado sin inconvenientes y que ha dirigido su respuesta de modo satisfactorio. De aquí en más, se supone, el sistema para el usuario resulta operacional.

Otro mecanismo que es similar a la activación es la de generar un número aleatorio para ser utilizado como una llave secundaria de activación. Este número es mostrado en pantalla de forma aleatorio y resulta difícil de copiar por los medios tradicionales copy & paste. Tampoco pueden ser escaneados o leídos por medio de algún tipo de software OCR. Esto evita que se creen cuentas de formas cíclicas una tras otra. Algún mal intencionado, podría crear con un software, un motor generador de cuentas y hacer un desastre en el sistema. Una de las victimas en el pasado fue Microsoft durante el servicio de correo electrónico de su proveedor tradicional Hotmail que facilitaba este tipo de procesos. La mayor caída del sistema por este tipo de ataques conocidos por su variante de ataque de denegación de servicios DoS (Denegation on Service), dejo a los usuarios de Hotmail por unas cuantas horas sin servicio para acceder y utilizar el recurso de correo electrónico.

Es por ello que se ha diseñado un modelo que evita estos potenciales peligros. Por tanto, si Ud., diseña un sitio donde se requiere de un sistema similar, es recomendable que tome estos recaudos y que diseñe un modelo seguro de creación de cuentas o membrecías. Véase el siguiente diagrama para concluir con la idea de este sistema.

ghj

El modelo agrega como último módulo un proceso de control basado en evento y tiempo. Una vez que es notificado el usuario a través del correo electrónico, el sistema le pedirá su activación y pondrá un conteo de 24hs para su activado. Si el usuario no procede con la activación sugerida, el servicio inmediatamente, cancela el cambio de la contraseña y restaura la contraseña actual volviendo nuevamente al comienzo antes de que se produjera la transacción ejecutada.

Nuestras novedades en tu e-mail

Escribe tu e-mail:



MailxMail tratarý tus datos para realizar acciones promocionales (výa email y/o telýfono).
En la polýtica de privacidad conocerýs tu derechos y gestionarýs la baja.

Cursos similares a Curso de MySQL con PHP



  • Výdeo
  • Alumnos
  • Valoraciýn
  • Cursos
1. Windows. Instalación de Apache, MySQL y PHP
El proceso para instalar Apache en Windows es muy sencillo.  Con este video te... [12/10/10]
1.759
Curso con video
2. PHP y MySQL. Aplicaciones Web: PHP y base de datos MySQL (décima parte)
Programación de aplicaciones Web con PHP y MySQL. Ahora te enseñaremos a conectar a... [02/12/08]
3.751  
3. PHP y MySQL. Aplicaciones Web: base de datos MySQL I (séptima parte)
Programación de aplicaciones Web con PHP y MySQL Ahora estudiaremos la Base de... [02/12/08]
3.225  

ýQuý es mailxmail.com?|ISSN: 1699-4914|Ayuda
Publicidad|Condiciones legales de mailxmail