PHP Classes

File: readme.es

Recommend this page to a friend!
  Classes of markitos   sauth   readme.es   Download  
File: readme.es
Role: ???
Content type: text/plain
Description: Archivo Readme es castellano
Class: sauth
Author: By
Last change:
Date: 23 years ago
Size: 7,210 bytes
 

Contents

Class file image Download
@Sauth README file. sauth es una clase que nos permite implementar en todo nuestro site un sistema muy facil de usar de autentificacion y seguimiento de usuarios. Este seguimiento se realiza mediante un uniqueid de sesion unico que es generado en el momento de inicio de sesion, justo despues de producirse la autentificacion (validada por supuesto). De este modo podemos usar esta clase como complemento a otras para gestionar por ejemplo un site orientado al comercion elctronico. La autentificacion puede llevar de forma opcional el modo paranioco, que nos valida ademas de por el uniqueid por la ip. Esto ha sido incluido de forma opcional debido a problemas detectados con algunos proxys. Como otra medida de seguridad esta el timeout de sesion, que nos hacer caducar la sesion cada x segundos en los que no hayamos tenido ningun movimiento dentro del site (o de la parte en la que sea necesario autentificacion), retornandonos al sitio donde nos quedamos una vez nos hayamos autentificado de nuevo. Para realizar los tests como primer paso debemos crear una base de datos con dos tablas, una para los datos de los usuarios y la segunda para almacenar las sesiones de estos. Para crear la base de datos nada mas simple que esto: root@localhost# mysqladmin -u root -ppass create sauth Database "sauth" created. Y un usuario para acceder a esta base de datos: root@localhost# mysql -u root -ppass mysql mysql> GRANT insert, select, update, delete -> ON sauth.* -> TO sauth@localhost -> IDENTIFIED BY 'sauth'; Query OK, 0 rows affected (0.01 sec) Ahora pasamos a hacer un volcado de la estructua: mysql> use sauth; Database changed mysql> Estructura de la base de datos que vamos a usar para el test: mysql> CREATE TABLE session ( -> id tinyint(3) unsigned NOT NULL auto_increment, -> uniqid char(100) NOT NULL, -> timestart int(20) unsigned NOT NULL, -> userdataid tinyint(3) unsigned NOT NULL, -> paranoical tinyint(1) unsigned DEFAULT '1' NOT NULL, -> sessionip char(15) NOT NULL, -> PRIMARY KEY (id), -> KEY id (id), -> UNIQUE id_2 (id, uniqid) -> ); Query OK, 0 rows affected (0.00 sec) mysql> CREATE TABLE userdata ( -> id tinyint(3) unsigned NOT NULL auto_increment, -> name char(15) NOT NULL, -> passname char(15) NOT NULL, -> timeout smallint(5) unsigned DEFAULT '60' NOT NULL, -> PRIMARY KEY (id), -> KEY id (id), -> UNIQUE id_2 (id, name) -> ); Query OK, 0 rows affected (0.00 sec) Y un par de usuarios del site con los que comprobar el sistema: mysql> INSERT INTO userdata (id, name, passname, timeout) VALUES ('', 'demo1','demo1', '60'); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO userdata (id, name, passname, timeout) VALUES ('', 'demo2','demo2', '30'); Query OK, 1 row affected (0.00 sec) mysql> quit; ++++++++++++++++++++++++++ Descripcion de los metodos ++++++++++++++++++++++++++ [metodos publicos] sauth: argumentos...: server......: nombre del servidor de base de datos (mysql en este caso). user........: nombre del usuario con permisos para atacar esta db. pass........: password del usuario. database....: nombre de la base de datos. funcion......: metodo constructor. retorno......: devuelve el objeto o falso si no ha sido instanciado. StartSession: argumentos...: Username....: nombre del usuario para el inicio de la sesion Passname....: clave de acceso del usuario para el inicio de la sesion ParanoicMode: indica si la session ha de ser en modo paranoia una vez haya tenido lugar la autentificacion con exito. este flag activa el seguimiento de la sesion con la ip ademas de con el uniqid de la misma funcion......: Inicia una nueva sesion de usuario. retorno......: devuelve el identificador (uniqid) de la sesion o falso en caso de fallo. CheckSessionId: argumentos...: uniqid......: numero unico de identificador de session de usuario. UserIp`.....: ip del usuario remoto. funcion......: valida el uniqid y el timeout de la session, asi como la ip si ha sido seleccionado en el inicio de la sesion el modo paranoia. retorno......: devuelve verdadero en caso de exito o falso en caso de fallo. ++++++++++++++++++++++++++ [metodos privados] ConnectMysql: argumentos...: funcion......: metodo de conexion al servidor mysql que contiene la base de datos con los usuarios y sus sesiones para el seguimiento. retorno......: verdadero en caso de realizarse la conexion con exito o falso en caso de fallo. CloseMysql: argumentos...: funcion......: cierra una conexion previamente establecida. retorno......: verdadero. ValidateUser: argumentos...: funcion......: valida un nombre de usuario junto con su contraseņa contra una base de datos. retorno......: el id del registro del usuario en la base de datos en caso de exito o falso en caso de fallo. GetUserData: argumentos...: Selected....: nombre de los campos de donde vamos a coger los datos. Table.......: nombre de la tabla de donde vamos a coger los datos. Data........: clausualas adicionales. este argumentos es una matriz asociativa donde cada pareja clave/valor representa una clausula condicional a la consulta. funcion......: devuelve una matriz simple con los datos solicitados. retorono.....: la matriz con los datos solicitados o falso en caso de fallo UpdateSessionId: argumentos...: UpdateId....: id del usuario en la base de datos que ha iniciado una nueva sesion funcion......: Inserta en la base de datos de sesiones una nueva sesion de usuario. retorno......: Verdadero en caso de exito, falso en caso de fallo. ExecSql: argumentos...: Sql.........: sentencia sql a ejecutar. funcion......: ejecuta una sentencia sql. este metodo es valido para sentencia tipo UPDATE, INSERT, etc, no para sentencias del tipo SELECT en las que el query devuelve un identificador o resultado con el cual extraer los datos. retorno......: verdadero en caso de exito, falso en caso de fallo. GetSessionId: argumentos...: funcion......: genera un unqid valido para poder iniciar la sesion. retorno......: el nuevo identificador en caso de exito o falso en caso de fallo. UpdateTimeSessionId: argumentos...: funcion......: actualiza en timeout de la sesion. retorno......: DeleteSessionId: argumentos...: funcion......: borra una session de usuario de la base de datos. retorno......: Notas @---@ - Por lo general siempre es mas conveniente que la validacion username/password sea case sensitive por mayor seguridad, aunque pueden haber casos en los que no importe esta medida y convenga quitar esta propiedad. Para ello tan solo tendremos que cambiar en el metodo ValidateUser la siguiente linea: if ((ereg("^$NameUser$", $this->UsernameSession('')))&&(ereg("^$PassUser$", $this->PasswordSession('')))){ ,por esta otra: if ((eregi("^$NameUser$", $this->UsernameSession('')))&&(eregi("^$PassUser$", $this->PasswordSession('')))){ mArKitos]|) )) ))) [xP] markitos@office.com