Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => PHP => Mensaje iniciado por: Velezano1910 en 19 Agosto 2009, 19:00 PM

Título: Algo de seguridad
Publicado por: Velezano1910 en 19 Agosto 2009, 19:00 PM
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
Título: Re: Algo de seguridad
Publicado por: Spider-Net en 19 Agosto 2009, 19:50 PM
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() (http://us2.php.net/manual/en/function.htmlentities.php)

strip_tags() (http://us2.php.net/manual/en/function.strip-tags.php)

stripslashes() (http://es.php.net/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!
Título: Re: Algo de seguridad
Publicado por: braulio-- en 19 Agosto 2009, 20:19 PM
Y para evitar SQL injection:
http://foro.elhacker.net/nivel_web/como_evitar_la_inyeccion_sql-t252384.0.html (http://foro.elhacker.net/nivel_web/como_evitar_la_inyeccion_sql-t252384.0.html)
Título: Re: Algo de seguridad
Publicado por: SnakeDrak en 19 Agosto 2009, 20:33 PM
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!
Título: Re: Algo de seguridad
Publicado por: дٳŦ٭ en 21 Agosto 2009, 20:27 PM
Re: Pequeños trucos en PHP
https://foro.elhacker.net/php/pequenos_trucos_en_php-t152467.0.html;msg756079#msg756079https://foro.elhacker.net/php/pequenos_trucos_en_php-t152467.0.html;msg756079#msg756079