Código de seguridad para acceso
Estás planteando 2 cuestiones:
1.- Cerrar el formulario al tercer intento.
2.- Que el "Nuevo usuario", una vez que conoce el Pwd que tú le has dado, al entrar esté obligado a cambiarla.
Con tu permiso, voy a añadir un par de cuestiones más:
3.- Que el usuario tenga que cambiar su password cada POR días.
4.- Que al tercer intento de entrar con el mismo usuario y una clave errónea le bloquee la cuenta.
5.- Que la clave que ponga no pueda ser ninguna de las POR últimas (esto es para jorobarle un poco y que piense)
6.- Le podemos poner limitaciones al password que piede poner (long. Máxima, mínima, que tenga números y letras, etc.) pero sólo vamos a limitar, por sencillez, que la clave no pueda ser el código de usuario.
Ahora tenemos el problema de seguridad de una aplicación completo.
¿Qué vamos a necesitar?
a) Un formulario de LogOn (el que creo que yá tienes).
b) Un formulario de Cambio de Clave (ese no sé si ya lo tienes pero lo necesitas)
c) Un formulario de Administración de usuarios (Creo que no lo tienes)
d) Una tabla de usuarios que, aparte de otros campos que tú le pongas para control de acceso a Pantallas, deberá tener los siguientes Campos:
- Código de Usuario
- Clave (deberías buscar algún algoritmo de Encriptación y guardarla encriptada)
- Tipo de Usuario (Administrador de Usuarios o Usuario vulgar). Normalmente, en sistemas de grandes compañías, los administradores de usuarios sólo pueden ejecutar la pantalla de gestión de usuarios.
- Fecha de Expiración de la Clave.
- Usuario Bloqueado.
d) Una tabla con los siguientes campos:
- Código de Usuario.
- Clave
- Orden
e) Una tabla con los siguientes campos:
- Código Usuario
- Intentos
Empecemos a trabajar.
Pantalla de Administración de Usuarios.
El Administrador de Usuarios, creará un usuario, le pondrá un Pwd, dirá si es usuario o Administrador y rellenará los campos de Permisos, etc. Automáticamente, la pantalla debe fijar la fecha de expiración al día anterior al que estamos (Date()-1) y fijar el campo "Usuario Bloqueado" a "NO". De esta forma, el usuario, al entrar, tendrá el Pwd expirado y deberá cambiarlo. Además, el sistema creará tantos registros en la tabla d) como passwords distintas tiene que recordar el sistema.
Si a un usuario se le ha olvidado el Pwd, típico a la vuelta de vacaciones, el Administrador podrá ponerle uno nuevo y el sistema deberá hacer lo mismo con la Fecha de Expiración y el "Usuario Bloqueado". Así es como trabajan los Pwd. Temporales asignados por el Administrador.
Si un usuario queda bloqueado, para el Administrador será lo mismo que en el caso anterior.
Pantalla de Acceso.
Deberá tener un contador de intentos (al tercer intento con Pwd erróneo o Usuario Bloqueado, se cierra el programa). Pero no acaba ahí la cosa.
Al Pulsar Ok, deberá comprobar:
1.- Si el usuario está bloqueado. Si lo está, incremento contador. Si no lo está, a la siguiente fase.
2.- Comprobar si el Pwd es correcto. Si lo es, pasar a la siguiente fase. Si no lo es:
2a) Deberá incrementar el contador de intentos de la tabla e) para ese usuario y si llega a 3 poner el campo "Usuario Bloqueado" de la Tabla de Usuarios a "SÍ".
2b) Incrementar el contador de intentos
3.- Si el Pwd es correcto, mirar la Fecha de Expiración de la clave. Si no ha expirado, pasa a la siguiente fase. Si el Pwd ha expirado, pasa a la pantalla de Cambio de Clave.
4.- Comprueba si el usuario es un usuario normal o un Administrador. Si es un usuario normal, abre la pantalla normal de la aplicación pero, en caso contrario, abre la pantalla de Administración de Usuarios.
Pantalla de Cambio de Clave
Esta pantalla debe pedir 2 veces la nueva clave (si es posible, deshabilitando el cut&paste - me he encontrado con usuarios que no se acordaban del Pwd que habían puesto hace 5 minutos porque se habbían equivocado al teclear la primera vez y habían hecho copiarYPegar con esa clave). De esta forma te aseguras de que se acordará de lo que pone.
Al dar al Ok:
- El programa verificará todas las limitaciones del punto 6 (para simplificar, hemos quedado en que que no sea la propia clave de usuario).
- Comprobará que no es ninguna de las claves que hay en la tabla d) para ese usuario.
- Eliminará la clave con el Orden 1, renumerará las siguientes y grabará la Nueva con el orden igual al último que tiene que recordar el sistema.
- Calculará la nueva fecha de expiración (Date() + X) y la grabará en la tabla a) junto con la nueva clave.
Con esta pequeña guía y un poco de paciencia, ya puedes diseñar un sistema de seguridad relativamente "robusto" para tu aplicación (quedan detalles como usuarios revocados por el administrador, etc)
Espero que no te haya aburrido y que te sea útil.
1.- Cerrar el formulario al tercer intento.
2.- Que el "Nuevo usuario", una vez que conoce el Pwd que tú le has dado, al entrar esté obligado a cambiarla.
Con tu permiso, voy a añadir un par de cuestiones más:
3.- Que el usuario tenga que cambiar su password cada POR días.
4.- Que al tercer intento de entrar con el mismo usuario y una clave errónea le bloquee la cuenta.
5.- Que la clave que ponga no pueda ser ninguna de las POR últimas (esto es para jorobarle un poco y que piense)
6.- Le podemos poner limitaciones al password que piede poner (long. Máxima, mínima, que tenga números y letras, etc.) pero sólo vamos a limitar, por sencillez, que la clave no pueda ser el código de usuario.
Ahora tenemos el problema de seguridad de una aplicación completo.
¿Qué vamos a necesitar?
a) Un formulario de LogOn (el que creo que yá tienes).
b) Un formulario de Cambio de Clave (ese no sé si ya lo tienes pero lo necesitas)
c) Un formulario de Administración de usuarios (Creo que no lo tienes)
d) Una tabla de usuarios que, aparte de otros campos que tú le pongas para control de acceso a Pantallas, deberá tener los siguientes Campos:
- Código de Usuario
- Clave (deberías buscar algún algoritmo de Encriptación y guardarla encriptada)
- Tipo de Usuario (Administrador de Usuarios o Usuario vulgar). Normalmente, en sistemas de grandes compañías, los administradores de usuarios sólo pueden ejecutar la pantalla de gestión de usuarios.
- Fecha de Expiración de la Clave.
- Usuario Bloqueado.
d) Una tabla con los siguientes campos:
- Código de Usuario.
- Clave
- Orden
e) Una tabla con los siguientes campos:
- Código Usuario
- Intentos
Empecemos a trabajar.
Pantalla de Administración de Usuarios.
El Administrador de Usuarios, creará un usuario, le pondrá un Pwd, dirá si es usuario o Administrador y rellenará los campos de Permisos, etc. Automáticamente, la pantalla debe fijar la fecha de expiración al día anterior al que estamos (Date()-1) y fijar el campo "Usuario Bloqueado" a "NO". De esta forma, el usuario, al entrar, tendrá el Pwd expirado y deberá cambiarlo. Además, el sistema creará tantos registros en la tabla d) como passwords distintas tiene que recordar el sistema.
Si a un usuario se le ha olvidado el Pwd, típico a la vuelta de vacaciones, el Administrador podrá ponerle uno nuevo y el sistema deberá hacer lo mismo con la Fecha de Expiración y el "Usuario Bloqueado". Así es como trabajan los Pwd. Temporales asignados por el Administrador.
Si un usuario queda bloqueado, para el Administrador será lo mismo que en el caso anterior.
Pantalla de Acceso.
Deberá tener un contador de intentos (al tercer intento con Pwd erróneo o Usuario Bloqueado, se cierra el programa). Pero no acaba ahí la cosa.
Al Pulsar Ok, deberá comprobar:
1.- Si el usuario está bloqueado. Si lo está, incremento contador. Si no lo está, a la siguiente fase.
2.- Comprobar si el Pwd es correcto. Si lo es, pasar a la siguiente fase. Si no lo es:
2a) Deberá incrementar el contador de intentos de la tabla e) para ese usuario y si llega a 3 poner el campo "Usuario Bloqueado" de la Tabla de Usuarios a "SÍ".
2b) Incrementar el contador de intentos
3.- Si el Pwd es correcto, mirar la Fecha de Expiración de la clave. Si no ha expirado, pasa a la siguiente fase. Si el Pwd ha expirado, pasa a la pantalla de Cambio de Clave.
4.- Comprueba si el usuario es un usuario normal o un Administrador. Si es un usuario normal, abre la pantalla normal de la aplicación pero, en caso contrario, abre la pantalla de Administración de Usuarios.
Pantalla de Cambio de Clave
Esta pantalla debe pedir 2 veces la nueva clave (si es posible, deshabilitando el cut&paste - me he encontrado con usuarios que no se acordaban del Pwd que habían puesto hace 5 minutos porque se habbían equivocado al teclear la primera vez y habían hecho copiarYPegar con esa clave). De esta forma te aseguras de que se acordará de lo que pone.
Al dar al Ok:
- El programa verificará todas las limitaciones del punto 6 (para simplificar, hemos quedado en que que no sea la propia clave de usuario).
- Comprobará que no es ninguna de las claves que hay en la tabla d) para ese usuario.
- Eliminará la clave con el Orden 1, renumerará las siguientes y grabará la Nueva con el orden igual al último que tiene que recordar el sistema.
- Calculará la nueva fecha de expiración (Date() + X) y la grabará en la tabla a) junto con la nueva clave.
Con esta pequeña guía y un poco de paciencia, ya puedes diseñar un sistema de seguridad relativamente "robusto" para tu aplicación (quedan detalles como usuarios revocados por el administrador, etc)
Espero que no te haya aburrido y que te sea útil.
1 Respuesta
Respuesta de joajai
1