Mejoras respecto de las sesiones nativas de PHP

Anuncio
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
Descargar