Actividad: Sesiones & Roles
1. Importancia de la seguridad en los aplicativos web
En la actualidad el crecimiento de internet ha impactado directamente en la seguridad de la información manejada cotidianamente. Sitios de comercio electrónico, servicios, bancos e incluso redes sociales contienen información sensible que en la mayoría de los casos resulta ser muy importante.
Debemos entender que programar aplicaciones web seguras no es una tarea fácil, ya que requiere por parte del programador, no sólo cumplir con el objetivo funcional básico de la aplicación, sino una concepción general de los riesgos que puede correr la información procesada por el sistema.
La seguridad de una página web no solo depende de la programación de la misma, sino también del modelo de negocio, la arquitectura, la plataforma de alojamiento y los diferentes agentes que toman al desarrollo y la entrega del servicio
Hoy en día Internet es de vital importancia para todos ya que muchos servicios residen y/o se ofrecen vía online. Por lo tanto, la gestión de los riesgos que pueden afectar a estos sistemas es un aspecto muy importante a tomarse en consideración. Sin entrar en detalles técnicos, podemos resumir que el riesgo se calcula mediante una fórmula aritmética en base a la probabilidad, al impacto de una vulnerabilidad y al valor del activo afectado. Una vulnerabilidad podemos considerarla como una debilidad presente en nuestro sistema la cual podría ser explotada por un atacante para comprometerlo.
2. Funciones comunes
En PHP se utilizan las siguientes funciones de sesiones
- session_id ( [ CADENA ] ) devuelve CADENA
Obtiene/Fija el valor del 'id' de la sesión actual.
- session_cache_expire ( [ ENTERO ] ) devuelve ENTERO (minutos)
Obtiene/Fija el valor en minutos que tienen que pasar para que la sesión actual caduque.
La variable (PHP.INI->[Session]->session.cache_expire) contiene el valor por defecto indicado en minutos.
- session_cache_limiter ( [ CADENA ]) devuelve CADENA
Obtiene/Fija el valor de una variable que indica el nivel de caché que habrá en el cliente:
- nocache (valor por defecto)
- public
- private (puede confundir algunos navegadores)
- private_no_expire
- session_decode (CADENA) devuelve BOOL
Decodifica la CADENA en el formato de las sesiones de PHP, y introduce los valores en la sesión activa.
Al finalizar:
- Devuelve 'true' si la operación se ha realizado correctamente
- Devuelve 'false' si la ha habido algún tipo de error y por consiguiente no se ha podido introducir los valores en la sesión activa.
- session_destroy (nada)
Destruye las variables de sesión con sus valores
Al finalizar:
- Devuelve 'true' si la operación se ha realizado correctamente
- Devuelve 'false' si la ha habido algún tipo de error y por consiguiente no se han podido borrar los valores de la sesión
- session_encode (nada) devuelve CADENA
Devuelve una cadena con la sesión actual codificada, en el formato indicado en el apartado ¿Dónde y cómo se guarda la información de la sesión en php?
Esta cadena puede utilizarse para almacenar sesiones y mas tarde reusarlas con la función 'session_decode'
- session_is_registered (CADENA) devuelve BOOL
Devuelve TRUE si existe una variable (en la sesión actual) con el nombre CADENA
Devuelve FALSE en caso contrario
- session_name ( [ CADENA ] ) devuelve CADENA
Si se pasa como parámetro una cadena, modifica el nombre de de la sesión actual se cambia a este valor; si se define un valor debe de usarse antes de session_start () y session_register (), y hacerlo en cada petición.
- session_readonly (nada) devuelve nada
Inicia la sesión, pero con la particularidad de que al finalizar el script las variables de sesión se quedan como estaban, es decir, no se guardan los nuevos valores de la sesión.
- session_register ( MIXTO [, MIXTO ...]) devuelve BOOLEANO
Registra una variable de sesión como tal, esta variable se puede acceder globalmente, por ello para acceder desde una función se debe de usar el comando global $variable;
3. Creación de usuarios
Generalmente un usuario posee su propia carpeta personal, permisos para ejecutar determinados programas y acceso limitado a determinada red informática (interna o externa) con todo lo que esto supone.
En Internet, los usuarios deben frecuentemente registrarse antes de poder acceder a un servicio. El registro se realiza por lo general mediante el ingreso de un nombre y una contraseña, aunque en determinados casos se solicita más información, la cual va a parar a una base de datos con determinada política de confidencialidad. También existen los usuarios anónimos, aunque hay que aclarar que los servidores Web registran las direcciones de IP desde las cuales son accedidos, por lo cual el anonimato existe sólo en potencia.
4. Métodos de acceso
La autenticación es el proceso de identificación de un individuo sobre la base de sus credenciales (normalmente nombre de usuario y contraseña), y Autorización (control de acceso) es el proceso de decidir si el usuario tiene permiso para ejecutar algo o no.
El objetivo de la autenticación es decidir si alguien es quien dice ser. Hay tres formas de reconocer a un usuario, que se conocen como factores:
Algo que saben, como una contraseña o PIN
Algo que tienen, tal como una licencia de conducir o tarjeta de crédito
Algo que son, como las huellas digitales o la inserción de los patrones
La autorización, a menudo llamado control de acceso, se refiere a la gestión del acceso a los recursos protegidos y al proceso de determinar si un usuario está autorizado a acceder a un recurso particular. Por ejemplo, muchas aplicaciones web cuentan con recursos que sólo están disponibles para los usuarios autenticados, recursos que sólo están disponibles para los administradores, y los recursos que están disponibles para todos.
https://www.juntadeandalucia.es/servicios/madeja/sites/default/files/historico/1.3.1/contenido-libro-pautas-110.html
5. Cierre de sesión
Cerrar sesión es la acción de terminar una sesión de un usuario específico, finalizando así el uso de un servicio o sistema. Es la acción inversa de iniciar sesión.
Sinónimos: logging out, log out, sign out, sign off, desidentificarse.
Una sesión puede cerrarse voluntariamente cuando así el usuario lo solicite, sin necesidad de colocar nuevamente nombre de usuario y contraseña.
Pero también la acción de cerrar de sesión puede ser automática. En general, cuando transcurre un determinado período de tiempo sin actividad, la sesión se cierra automáticamente por cuestiones de seguridad, esto sucede especialmente en homebanking.
Una sesión también puede terminarse si el sistema de seguridad sospecha del usuario que ha iniciado sesión, especialmente si hace actividades fuera de lo normal.
Fuente:
https://www.alegsa.com.ar/Dic/cerrar_sesion.php
6. Encriptación de contraseñas
Uno de los métodos más seguros y extendidos en el desarrollo de aplicaciones es almacenar las contraseñas encriptadas. Para ello, existen funciones creadas con el objetivo de transformar cualquier cadena de datos en otra totalmente diferente. Son las llamadas funciones criptográficas hash o más conocidas como "hash".
El "hasheo" de datos consiste en aplicar un algoritmo a una cadena de entrada para obtener una nueva de longitud fija. Es decir, sea cual sea la longitud de entrada, la función devolverá una serie de la misma longitud.
Las funciones hash más conocidas en el desarrollo se software son MD5 y SHA1. La primera devuelve una cadena de 32 caracteres y a segunda de 40. No obstante, los algoritmos empleados en ellos se han quedado obsoletos y ya no son seguros, ya que con la potencia que poseen los ordenadores hoy en día se puede fácilmente revertir el algoritmo para desencriptar los datos.