SecSess v0.5 Mejoras respecto de las sesiones nativas de PHP A continuación se listan las ventajas o mejoras del software SecSess v0.4 con respecto al manejo de las sesiones nativas de PHP: 1. 2. 3. 4. 5. 6. 7. 8. 9. Manejo de la información de la sesión con base de datos. Se realizan únicamente 2 consultas a base de datos. Manejo automático de la IP del usuario. Manejo de cookies HTTPOnly para combatir el robo de SID mediante ataques XSS. Auto regeneración del ID de la sesión para combatir el "Session Fixation". Valida el formato del ID de la sesión; si es inválido genera uno nuevo ("strict session management mechanism"). Capacidad de enviar salidas al navegador en cualquier momento de la ejecución del script. Implementación de un mecanismo "readOnly" para leer los datos de una sesión si la misma existe sin crear una nueva en caso contrario. Este mecanismo resulta útil en la verificación de las credenciales de un usuario; si el usuario no está autorizado no nos interesará asignarle un SessID al recuperar sus datos de sesión. Posibilidad de destruir completamente (tanto cookie como los datos en memoria y en BD) una sesión mediante SessionDestroy(). Métodos públicos Set Uso Set(directive, value) Función Modifica las directivas de configuración del objeto. Argumentos SessionInfo directive: acepta uno de los valores siguientes: o string sessName: nombre de la sesión. o bool cookiesTransID: si el SID se propaga por cookies. o bool URLTransID: si el SID se propaga por URL. o int sessLifeTime: tiempo de vida de la sesión en segundos. o int GCProbability: porcentaje de probabilidad de que se ejecute el GC en una llamada a SessionStart(). o bool SIDRegenerate: si el SID se regenera en cada SessionUpdate() o bool HTTPOnlyCookie: si la cookie será HTTPOnly value: el valor que se desea que tome la directiva colocada. Uso SessionInfo() Función Retorna un array que contiene la información de la sesión al momento de su llamada. Los índices del array son: 'id', 'time', 'ip', 'sid' donde 'sid' es un string del tipo nombre_sesion=SID útil para propagar el SID por URL. SessionReset Uso SessionReset() Función Asigna al usuario una nueva sesión sin eliminar la sesión antigua. SessionDestroy Uso SessionDestroy() Función Elimina la sesión actual de la base de datos, borra las variables de sesión, elimina la cookie del usuario y desconecta de la base de datos. SessionStart Uso SessionStart() Función Comienza una nueva sesión o recupera una sesión existente. Los datos de la sesión deben ser almacenados en el array público sessData[]. SessionUpdate Uso SessionUpdate() Función Refleja en la base de datos los cambios realizados durante la sesión. SessionRead Uso SessionRead() Función Recupera una sesión existente. Si no existe una sesión para recuperar no creará una nueva, a diferencia de SessionStart() Constructor de la clase Uso 1. __construct(dbType, dbHost, dbUser, dbPass, dbName, dbTable) 2. __construct(dbType, connection, dbTable) Función Constructor del objeto. Argumentos string dbType: tipo de base de datos. Puede ser uno de los siguientes tipos definidos: o mysql o sqlserver o postgre string dbHost: host de la base de datos. string dbUser: usuario de la base de datos. string dbPass: contraseña de la base de datos. string dbName: nombre de la base de datos. string dbTable: tabla donde se almacenan los datos de las sesiones. resource connection: link de una conexión a base de datos. Secuencia de llamadas Para el correcto funcionamiento de la clase debe respetarse la siguiente secuencia de llamadas a los métodos de la misma: 1. Constructor del objeto 2. Set() // Puede llamarse más tarde, pero no modificará directivas ya utilizadas por los métodos llamados anteriormente 3. SessionStart() o SessionRead() // Si se utiliza SessionRead() los cambios realizados en sessData no se reflejarán en BD 4. SessionDestroy() // Luego no se pueden llamar a otros métodos 5. SessionInfo() 6. SessionReset() 7. sessData['...']='...' Consideraciones Si se utilizan funciones o clases para el manejo de buffers, debe llamarse explícitamente al método SessionUpdate() antes de ralizar la llamada a los mismos para evitar errores relacionados con el envío de cookies posterior al de cabeceras. A cerca de Copyright 2011 Daniel Pisano. No se permite la distribución, copia, modificación, publicación o uso no autorizado de los códigos bajo ningún concepto. Versión del Software: 0.5