Foros del Web » Programando para Internet » PHP »

Crear un sistema seguro en PHP + Mysql + htaccess

Estas en el tema de Crear un sistema seguro en PHP + Mysql + htaccess en el foro de PHP en Foros del Web. Hola, estoy intentando crear un sistema seguro en php. La idea está en que solo puedes acceder a la web si ingresas en tu cuenta ...
  #1 (permalink)  
Antiguo 23/01/2011, 14:26
 
Fecha de Ingreso: agosto-2009
Mensajes: 13
Antigüedad: 14 años, 8 meses
Puntos: 0
Sonrisa Crear un sistema seguro en PHP + Mysql + htaccess

Hola, estoy intentando crear un sistema seguro en php. La idea está en que solo puedes acceder a la web si ingresas en tu cuenta (Que tiene un nombre de usuario y una contraseña).

El scrip consta de un archivo "index.php" que contiene la autentificación de los usuarios y se encarga de cargar el resto de scripts de la carpeta "/phpscripts" que contiene la web que se mostrará una vez autentificado el usuario.
La carpeta "/phpscripts" está protegido contra el accesso a la carpeta mediante htaccess, con lo que la única forma de ejecutar dichos scripts es estando autentificado e incluidas desde el "index.php".

La autentificación se hace mediante 3 cokies (1x NOMBRE DE USUARIO y 2x NUMEROS MD5 AL AZAR QUE SE GENERAN CADA VEZ QUE UN USUARIO SE LOGUEA Y SE GUARDA EN LA BASE DE DATOS MYSQL)

Solo puede haber un usuario logueado una vez en un equipo (es decir, no pueden haber dos ordenadores distintos logueados en la misma cuenta).

El script comprueba el nombre de usuario y los dos hasches y si coinciden con los de las cokies entonces deja cargar la página (ej: "index.php?pagina=blog")

PROBLEMAS: Si algún atacante remoto consigue el contenido de las 3 cokies puede acceder al sistema facilmente.

Hay alguna forma de conseguir un sistema que sea algo más seguro contra un ataque de éste tipo? Teniendo en cuenta que no uso servidor que permita conexiones shtml.

Usar sesiones es más seguro? O hay alguna forma de hacer el sistema mas seguro?

P.D: Si hay forma más segura, no es preciso tampoco que se limite a un ordenador, pero sería preferente.

Alguien me puede dar algunos consejos o ejemplos de hacer algún sistema más seguro en php???

Un saludo.
  #2 (permalink)  
Antiguo 26/12/2012, 17:24
 
Fecha de Ingreso: octubre-2012
Ubicación: Machalí, Chile
Mensajes: 6
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Crear un sistema seguro en PHP + Mysql + htaccess

Hola
Yo me meti a PHP hace mas o menos 1 mes.
Pero creo que una buena forma es si encriptas la contraseña en la BD y envez de usar cookies usar sesiones.

Mira un ejemplo (sin codigo):
1.- Al registrarse podrias encriptar la contraseña y insertar a la BD la contraseña encriptada.
2.- Al iniciar sesion podrias encriptar la contraseña enviada por el usuario ($_POST) y comprovar si la contraseña encriptada (que esta en la BD) es igual a la contraseña encriptada enviada por el usuario

Aqui el codigo para el registro:
Código PHP:
Ver original
  1. <?php
  2. // la conexion a la BD iniciada previamente
  3. if (isset($_POST["txtUsername"]) && isset($_POST["txtPassword"])){
  4. $nUser = $_POST["txtUsername"];
  5. $pUser = $_POST["txtPassword"];
  6. $registrar= mysql_query("INSERT INTO usuarios (nombre_usuario,pass_usuario)  VALUES ('".$nUser."','".sha1($pUser)."'");
  7. if ($registrar){
  8. echo "Te has registrado correctamente";
  9. } else {
  10. echo "Ocurrio un error al registrarte.";
  11. }
  12. ?>

Aqui el codigo para el inicio de sesion:
Código PHP:
Ver original
  1. <?php
  2. // la conexion a la BD iniciada previamente
  3. if (isset($_POST["txtUsername"]) && isset($_POST["txtPassword"])){
  4. $nUser = $_POST["txtUsername"];
  5. $pUser = $_POST["txtPassword"];
  6. $seleccion = mysql_query("SELECT * FROM usuarios WHERE nombre_usuario='".$nUser."' AND pass_usuario='".sha1($pUser)."' LIMIT 1");
  7. if ($seleccion){
  8. $_SESSION["userName"]=$nUser;
  9. $_SESSION["userPass"]=$pUser;
  10. echo "Hola ".$_SESSION["userName"];
  11. } else {
  12. echo "Nombre de usuario y/o contraseña incorrectos.";
  13. }
  14. ?>
  #3 (permalink)  
Antiguo 27/12/2012, 00:16
Avatar de malakian  
Fecha de Ingreso: septiembre-2010
Ubicación: $malakian->Colombia();
Mensajes: 469
Antigüedad: 13 años, 7 meses
Puntos: 45
Respuesta: Crear un sistema seguro en PHP + Mysql + htaccess

El inicio de sesión es vulnerable a Sql Inyection, por lo menos hay que escapar las cadenas de texto.

Código PHP:
Ver original
  1. $nUser = addslashes($_POST["txtUsername"]);
  2. $pUser = addslashes($_POST["txtPassword"]);

Ya que estas encriptando en la clave no sería necesario.. pero bueno...

saludos
__________________
Guitar Loco, Desarrollador Web PHP
Sigueme: @jose1x

Etiquetas: mysql, seguridad
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:07.