![]() |
validar usuarios de forma correcta
pretendo que los usuarios se validen antes de entrar a mi sitio web. Los pares usuario/contraseña estarán almacenados en un tabla llamada usuarios dentro de una base de datos MySQL.
tendré 3 ficheros login.php : contendrá el formulario html donde se introducirá el usuario y la contraseña. Al hacer clic sobre el boton se enviará el formulario utilizando POST al script php autenticacion Código PHP:
Código PHP:
seguridad.php: para evitar que alguien pueda ejecutar mi aplicacion(index.php) sin previamente haberse validado se incluirá seguridad php al principio de index.php de forma que sea lo primero que se ejecute Código PHP:
Código PHP:
¿Qué se puede mejorar? ¿Qúe incluiriais? ¿Hay una forma de permitir sólamente 3 intentos?. Se me ocurre que agregando un nuevo campo en la base de datos numfallos, fecha,hora y que desde que se llegue a un número de fallos predeterminado que se bloquee durante un periodo de tiempo determinado desde fecha hora el usuario podría ser una mejora para eviar que alguien utilice un programa para hacer tropocientos intentos ¿es suficiente el uso de una consulta parametrica para evitar SQLInjection? salu2 y gracias |
Jau!
Cita:
Debes comprobar que los valores recibidos en $_GET son válidos y no contienen cosas raras como código que pueda servir para hacer sql injecting o ataques xss. Es decir, antes de ejecutar el SELECT nos aseguramos de que las variables usuario y password contienen unicamente letras y dígitos, por ejemplo, y que no tengan caracteres como <,#,?,",', etc. Para esto lo mejor sería usar un script de probada eficacia como Kses o PHPIDS. Cita:
Cita:
session_start; if ($autentificado) include('user.php'); else include(login.php); Teniendo en user.php el típico código que pone "hola fulanito" con los enlaces o botones para cerrar sesión, ver perfil, etc. Y en login.php el form con los inputs para user y password y si acaso otro botón o enlace para "recordar contraseña" Ademas de eso en cada página, despues del seguridad.php deberias permitir unas cosas u otras en función de los derechos de acceso del uaurio, para lo cual deberías disponer de un sistema de permisos, con usuarios, roles, grupos, etc. Lo del nombre de la variable logueado no le veo mucho sentido. En mis scripts dicha variable es booleana. Claro, que un usuario, además de poder tener true o false en "logueado" tambien tiene otra variable "userlevel" que le permite mas o menos privilegios. O sea, que un user con "logueado==true" cuyo userlevel sea el "level por omisión" es practicamente un "invitado" y poco puede hacer hasta que no se le hayan otorgado derechos de acceso a alguna parte o adjudicado algún rol o adscrito a algún grupo. Cita:
Gueno, menudo rollo he largao, XDD |
Se que utilizar paràmetros en las consultas no soluciona todo (puede ser la constumbre de utilizarlas en delphi, "la cabra tira al monte"), pero sin tan solo se encaerga de asignar el tipo de datos correctos, pondrá más dificil . Además como comentas hay que revisar todas las variables que me pasen tanto por GET como por POST (no hay que fiarse nunca de un usuario). No conocía las librerias que mencionas pero voy a probarlas y supongo que acabarlas integrando en todo el proyecto.
el fichero seguridad.php está pensado para que en cada fichero php del proyecto incluir nada más empezar un include('seguridad.php'); de forma que se comprueba la seguridad con solo incluir este include. lo del nombre de la variable, es que lo lei por ahí,decidí incluirlo para ver si añgien me lo aclaraba. En cuanto a limitar el acceso desde una dirección ip, me parece buena idea, pero que pasa si bloqueas un usurio que te entra desde la ip tal,¿No estarías bloqueando a todos los usuarios que están tras el mismo router ya que todos salen con la misma ip? De rollo nada me has dado bastantes ideas, salu2 |
se me acaba de ocurrir otra posible mejora, almacenar la passwd encriptada en la base de datos. Podría utilizar la funcion md5 de php
http://php.net/manual/en/function.md5.php Salu2 |
La franja horaria es GMT +2. Ahora son las 05:05:52. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi