Algo de seguridad

Iniciado por Velezano1910, 19 Agosto 2009, 19:00 PM

0 Miembros y 1 Visitante están viendo este tema.

Velezano1910

Hola, tengo algo hecho en php para que usuarios que doy de alta en una base de datos, puedan cargar una informacion.
Pero me gustaria darle algo de seguridad a esto que hice, porque el sistema de Login es muy simple. si alguien puede darme una mano lo agradezco, a continuacion dejo el codigo de "comprueba.php" el que toma el nombre de usuario y contraseña inicialmente.

<?php
    include("conexion.php");
       if ($_POST['user_nombre'])
      {
          $user_nombre=$_POST['user_nombre'];
          $user_pass=$_POST['user_pass'];
       if ($user_pass==NULL)
      {
          echo "La password no fue enviada";
      }else{
          $query = mysql_query("SELECT user_nombre,user_pass FROM user WHERE user_nombre = '$user_nombre'") or die(mysql_error());
          $data = mysql_fetch_array($query);
      if($data['user_pass'] != $user_pass) {
          echo "Login incorrecto";
      }else{
          $query = mysql_query("SELECT user_nombre,user_pass FROM user WHERE user_nombre = '$user_nombre'") or die(mysql_error());
          $row = mysql_fetch_array($query);
          $_SESSION["s_username"] = $row['user_nombre'];
          echo "Has sido logueado correctamente ".$_SESSION['s_username']." ingresar al: <a href='lala.php'>Entrar</a>";
         }
         }
      }
?>

Luego en cada página pongo este código en la cabeza:
<?php
      include("conexion.php");
   if (isset($_SESSION['s_username'])) {
?>
Y este al pie:
<?php
}else{
    echo "No estas identificado";
    echo $_SESSION['s_username'];
   }
?>

A quien me pueda ayudar, muchas gracias

Spider-Net

Una cosa importante antes que nada es filtrar! todas las variables antes de trabajar con ellas. Tu código podría ser vulnerable a XSS.

Usa una función para depurar las variables siempre antes de mostrarlas o trabajar con ellas. Existen muchísimas funciones que aumentarán la seguridad como lo pueden ser

htmlentities()

strip_tags()

stripslashes()

Y un sinfin de funciones más, hay muchísimas funciones en internet para depurar variables y evitar posibles ataques.

Otra cosa que te recomendaría es cifrar las contraseñas de tu base de datos en MD5, así aunque algún atacante consiguiese acceder a la información de tu base de datos por el motivo que sea no obtendría las contraseñas de tus usuarios en texto plano.

Un saludo!


SnakeDrak

Hola,

Te recomiendo que siempre compruebes los datos que pasa el cliente con preg_match :D.

http://es.php.net/manual/en/function.preg-match.php
Saludos!