Foros del Web » Programando para Internet » PHP »

redireccionar y seguridad de mi script con sesiones

Estas en el tema de redireccionar y seguridad de mi script con sesiones en el foro de PHP en Foros del Web. Hola a todos, tengo una web en la que hay contenidos privados y publicos, para ver los privados hay que estar logeado, hasta ai bien. ...
  #1 (permalink)  
Antiguo 06/12/2010, 07:17
 
Fecha de Ingreso: abril-2010
Mensajes: 62
Antigüedad: 14 años
Puntos: 0
Pregunta redireccionar y seguridad de mi script con sesiones

Hola a todos, tengo una web en la que hay contenidos privados y publicos, para ver los privados hay que estar logeado, hasta ai bien.
El metodo de logueo hasta ahora lo estaba haciendo de esta forma:
(codigo en la pagina con contenido privado)
Código PHP:
Ver original
  1. if ($_SESSION['usuario']==""){
  2.  
  3. include("login.php");
  4.  
  5. }
(esta es la pagina qe comprueba que los datos enviados por login.php son correctos)
Código PHP:
Ver original
  1. <?php
  2. ?><html>
  3. <body>
  4. <?
  5.  
  6. include("conexion.inc");
  7. $conexion=mysql_connect($mysql_server,$mysql_login,$mysql_pass) or die ("Error en la conexion");
  8.  
  9. mysql_select_db("bd",$conexion);
  10.  
  11. $entradausuario=$_POST['usuario'];
  12. $entradapass=$_POST['pass'];
  13.  
  14.  
  15. $consulta=mysql_query("SELECT * FROM usuarios WHERE USUARIO='".$entradausuario."'",$conexion);
  16. $resultado=mysql_fetch_row ($consulta);
  17. $numero=mysql_num_rows($consulta);
  18.  
  19.  
  20.  
  21.  
  22. if($entradausuario==$resultado[0]){
  23.     if($entradapass==$resultado[1]){
  24.     $_SESSION['usuario']=$entradausuario;
  25.     ?>  <script languaje="JavaScript">
  26.  
  27. location.href="index.php?<?php echo session_name()."=".session_id()?>";
  28. </script>
  29. <?php
  30. }
  31. else{?>
  32. <script languaje="JavaScript">
  33. window.location.href="index.php";
  34. alert("Password incorrecta");
  35. </script>
  36. <?php
  37. }
  38. }
  39. else{?>
  40. <script languaje="JavaScript">
  41. window.location.href="index.php";
  42. alert("Usuario incorrecto");
  43. </script>
  44. <?php
  45. }
  46. ?>
  47. </body>
  48. </html>
me surgio la duda de como hacer para que no siempre me redirija a index.php por que si el usuario quiere ver una noticia privada,, lo mas logico es que despues de logear dirigiese a la pagina de la noticia (PROBLEMA 1)

mirando por el foro me he dado cuenta que nadie aconseja utilizar esto en cada enlace
<?php echo session_name()."=".session_id()?>
ya que no es seguro, lo he quitado y no hay problemas, ahora no se si mi forma de autentificar usuarios es segura ((PROBLEMA 2)

os agradeceria que me dieseis algun consejo o solucion para los problemas gracias!!!
  #2 (permalink)  
Antiguo 06/12/2010, 07:36
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 4 meses
Puntos: 13
Respuesta: redireccionar y seguridad de mi script con sesiones

Para el problema 1 lo que se me ocurre es que podes agregar a la URL como un parametro a donde tendria que redireccionar cuando termina el login.

Con respecto a la seguridad, no debes usar las variables directamente, siempre las debes validar:

Cita:
$entradausuario=$_POST['usuario'];
$entradapass=$_POST['pass'];
usa la funcion mysql_real_escape_string($var)
que se usa para evitar inyecciones sql.
Lo cual quedaría asi:

Código PHP:
$entradausuario=mysql_real_escape_string($_POST['usuario']);
$entradapass=mysql_real_escape_string($_POST['pass']); 

Otra cosa a tener en cuenta, encripta las contraseñas ya sea con md5 o sha1 que generan un hash, el cual no se puede decriptar (existen bases de datos, pero hasta ahora no se ha podido romper su seguridad) y asi evitas que se obtengan las contraseñas en caso de robo de la bd.
el codigo quedaria asi:

Código PHP:
$entradapass=md5($_POST['pass']); 
Y ten en cuenta que cuando se guarda la contraseña en la bd (accion de registro) tambien se debe encriptar con la funcion md5.
  #3 (permalink)  
Antiguo 06/12/2010, 07:53
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 4 meses
Puntos: 13
Respuesta: redireccionar y seguridad de mi script con sesiones

Agrego otra opcion, en vez de usar javascript de esa manera

Código:
<script languaje="JavaScript">
 
location.href="index.php?<?php echo session_name()."=".session_id()?>";
</script>
Podes probar enviar una cabecera de la siguiente forma:

<?php
header("Location: index.php?".session_name()."=".session_id());
?>
  #4 (permalink)  
Antiguo 06/12/2010, 10:21
 
Fecha de Ingreso: abril-2010
Mensajes: 62
Antigüedad: 14 años
Puntos: 0
Respuesta: redireccionar y seguridad de mi script con sesiones

gracias por responder! no tenia ni idea de eso de encriptar, lo voy a probar a ver que tal,
lo que no me quedo muy claro es cual de los dos usar
$entradapass=md5($_POST['pass']);
$entradapass=mysql_real_escape_string($_POST['pass']);

y cuando vaya a insertar a la BD por ejemplo INSERT INTO USUARIOS VALUES(.....
como pongo para encriptar la contraseña?

de nuevo gracias ya que esto no lo habia tenido en cuenta
  #5 (permalink)  
Antiguo 06/12/2010, 10:31
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 4 meses
Puntos: 13
Respuesta: redireccionar y seguridad de mi script con sesiones

Vamos de a poco, si ya tienes usuarios para que siga funcionando puede ejecutar la siguiente consulta para que te actualize todas las contraseñas con el correspondiente hash:

Código PHP:
UPDATE USUARIOS SET password=md5(password); 
Luego la consulta de insercion seria algo asi:

Código PHP:
$sql "INSERT INTO USUARIOS VALUES(username, password) VALUES ('$username', '".md5($password)."');"
Por último tenes que usar la siguiente:

Código PHP:
$entradapass=md5($_POST['pass']); 
  #6 (permalink)  
Antiguo 06/12/2010, 10:35
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 4 meses
Puntos: 13
Respuesta: redireccionar y seguridad de mi script con sesiones

Ah, algo que me olvidaba mencionar, el hash md5 siempre tiene una longitud de 32 caracteres, así que tenelo en cuenta para la base de datos. Además una cadena resultado del hash md5 posee numeros y letras solamente.
Otra cosa interesante es que si le haces el hash a una cadena vacia, tambien genera una cadena de 32 caracteres, asi que si queres validar la cadena, debes hacerlo con la original y por último aplicarle el hash.
  #7 (permalink)  
Antiguo 07/12/2010, 13:04
 
Fecha de Ingreso: abril-2010
Mensajes: 62
Antigüedad: 14 años
Puntos: 0
Respuesta: redireccionar y seguridad de mi script con sesiones

muchas gracias lo probare!
respecto a lo de redireccionar ya lo he solucionado, lo vi en un post del foro, lo pongo aqui por si a alguien le sirve:

$redireccion = urlencode($_SERVER['REQUEST_URI']);
<form action="compruebausuario.php?redireccion=<?php echo $redireccion; ?>" method="POST">

Etiquetas: redireccionar, seguridad, sesiones
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 12:01.