Foros del Web » Programando para Internet » PHP »

Problema Sesiones Cookies!

Estas en el tema de Problema Sesiones Cookies! en el foro de PHP en Foros del Web. Tengo un Pequeño problemilla.. Ejem tengo un pequeño apartado comprimido solo para los admins. con este codigo. La cosa es que en local me funciona ...
  #1 (permalink)  
Antiguo 13/08/2008, 18:37
 
Fecha de Ingreso: julio-2008
Ubicación: Pontevedra
Mensajes: 23
Antigüedad: 15 años, 8 meses
Puntos: 0
Problema Sesiones Cookies!

Tengo un Pequeño problemilla..

Ejem tengo un pequeño apartado comprimido solo para los admins. con este codigo. La cosa es que en local me funciona correctamente. Y Cuando lo llevo al servidor es como si no escribiera nada en el login. Miren.

Código PHP:
      <?php
      
//AQUI CONEXION O include() DE ARCHIVO DE CONEXION CON BASE DE DATOS.
include("conecta.php");

if(
trim($HTTP_POST_VARS["nick"]) != "" && trim($HTTP_POST_VARS["password"]) != "")
{
$nickN $HTTP_POST_VARS["nick"];
$passN $HTTP_POST_VARS["password"];
$result mysql_query("SELECT c_password FROM users WHERE c_nombre='$nickN'")or die(mysql_error());  
 
      if(
$row mysql_fetch_array($result))
 
      {
      if(
$row["c_password"] == $passN)
      {
      
//90 dias dura la cookie
 
      
setcookie("usNick",$nickN,time()+7776000);
      
setcookie("usPass",$passN,time()+7776000);
      
     echo 
" Ingreso exitoso, ahora sera dirigido a la pagina principal.";
 
?>
      <SCRIPT LANGUAGE="javascript">
      location.href = "menu.php";
      </SCRIPT>
      <?php
      
}
 else
      {
      echo 
"Password incorrecto";
      }
      }
      else
      {
     echo 
"Usuario no existente en la base de datos";
    }
      
mysql_free_result($result);
      }
      else
      {
      echo 
"Debe especificar un nick y password";  
      } 
      
mysql_close();
      
?>
Me salta el error de
Debe especificar un nik y password

La cosa es que en local va bien alguien me podria ayudar?

Les dejo el link de en el servidor Fijense que si ponen un erroneo deberia aparecer otro error no pero siempre aparece eso hagas lo que hagas.

http://ddanime.org/ddanime2/panel/
  #2 (permalink)  
Antiguo 13/08/2008, 21:06
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Problema Sesiones Cookies!

Tema trasladado a PHP.
  #3 (permalink)  
Antiguo 14/08/2008, 07:56
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema Sesiones Cookies!

- No uses HTTP_POST_VARS para acceder a las variables, usá $_POST
- no redirecciones con javascript, usá header('Location: nuevapagina');
- no guardes los datos del usuario en cookies, mejor usá sesiones (http://php.net/session)
- Poné estas líneas al principio de tu programa, forzarán a que todos los errores y advertencias se muestren:

Código PHP:
error_reporting(E_ALL);
ini_set('display_errors'true); 

Saludos.
  #4 (permalink)  
Antiguo 15/08/2008, 13:42
 
Fecha de Ingreso: julio-2008
Ubicación: Pontevedra
Mensajes: 23
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Problema Sesiones Cookies!

Gracias arregle el problema con el $_POST tengo que aprobar el header.
  #5 (permalink)  
Antiguo 15/08/2008, 14:00
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema Sesiones Cookies!

Es mysql_fetch_array o mysql_fetch_assoc?

Creo que es ahí donde tienes el error.
  #6 (permalink)  
Antiguo 15/08/2008, 19:05
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema Sesiones Cookies!

Triby, cualquiera de las dos son válidas:

http://php.net/mysql_fetch_array
http://php.net/mysql_fetch_assoc
http://php.net/mysql_fetch_row


Saludos.
  #7 (permalink)  
Antiguo 15/08/2008, 19:07
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 2 meses
Puntos: 20
Respuesta: Problema Sesiones Cookies!

Alvlin, ¿por qué dices que...

Cita:
- no guardes los datos del usuario en cookies, mejor usá sesiones (http://php.net/session)


PD: Hoy leí que mysql_fetch_assoc consume algo menos que mysql_fetch_array, ya que crea un array simple y no guarda índices+valores, o algo así.
  #8 (permalink)  
Antiguo 16/08/2008, 15:35
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema Sesiones Cookies!

porque la seguridad a través de cookies es nula. Fácil de burlar para quien sepa hacerlo, ya que usuario y contraseña viajan en cada petición.

Con sesiones también se usan cookies, pero la cookie solamente contiene un identificador único que referencia a un archivo de datos que está en el servidor, por lo que el usuario no tiene forma de falsearlo. Es MUCHO más seguro

Con respecto a mysql_fetch_*, las diferencias son:

*_row: crea un vector con índices numéricos
*_assoc: crea un vector cuyos índices son cadenas
*_array: crea ambos tipos de índice (o el que se especifique, dependiendo de el segundo parámetro opcional)

Según el sentido común, el más rápido es mysql_fetch_row. El manual dice que la diferencia de rendimiento entre _row y _assoc es despreciable, por lo que resulta más cómodo usar mysql_fetch_assoc.

Igual nunca he visto pruebas de rendimiento, así que no puedo afirmar esto con pruebas.


Saludos.
  #9 (permalink)  
Antiguo 16/08/2008, 16:56
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 2 meses
Puntos: 20
Respuesta: Problema Sesiones Cookies!

Cita:
Iniciado por alvlin Ver Mensaje
porque la seguridad a través de cookies es nula. Fácil de burlar para quien sepa hacerlo, ya que usuario y contraseña viajan en cada petición.

Con sesiones también se usan cookies, pero la cookie solamente contiene un identificador único que referencia a un archivo de datos que está en el servidor, por lo que el usuario no tiene forma de falsearlo. Es MUCHO más seguro
Pero puede conseguir el SID (el identificador que sirve de referente) y con él ya no necesita saber ni usuario ni contraseña. Creo

Si consigue usuario y contraseña obteniéndolas de las cookies del usuario (ambos datos codificados) no puede acceder a la cuenta a no ser que los crackee para descifrarlos.
  #10 (permalink)  
Antiguo 16/08/2008, 17:26
Avatar de vb2005  
Fecha de Ingreso: noviembre-2005
Ubicación: Paderborn - Alemania
Mensajes: 566
Antigüedad: 18 años, 5 meses
Puntos: 24
Respuesta: Problema Sesiones Cookies!

las cookies bien usadas pueden ser tan seguras como las sessions, y más practicas

teniendo una funcion de encriptacion "secreta" digamos, no hay forma de que sepan como tienen que ser los valores de las cookies
__________________
www.marcher.com.uy - Web personal
Nerd's Corner - Desarrollo de software a medida
  #11 (permalink)  
Antiguo 16/08/2008, 20:40
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema Sesiones Cookies!

Cita:
Iniciado por david_M_G Ver Mensaje
Pero puede conseguir el SID (el identificador que sirve de referente) y con él ya no necesita saber ni usuario ni contraseña. Creo
Cierto, pero solamente mientras dure la sesión (que por seguridad normalmente se cierra después de 10-20 minutos de inactividad)

Cita:
Iniciado por david_M_G Ver Mensaje
Si consigue usuario y contraseña obteniéndolas de las cookies del usuario (ambos datos codificados) no puede acceder a la cuenta a no ser que los crackee para descifrarlos.
Falso. Si consigue acceso a la cookie, puede enviar exactamente lo mismo que envía el usuario mediante cabeceras HTTP, ¡no necesita decodificar nada!

La utilidad de "robar" el identificador de sesión es limitada. Aún si el usuario deja la ventana del navegador abierta y se va, un atacante solamente tiene un cierto tiempo para intentar hacerse con la sesión (siguiendo con la idea de arriba de que la sesión se debe cerrar por inactividad).

Robar una cookie con datos que no expiran (como usuario y contraseña) es mucho más útil: puedo robarla y usarla semanas después.
Han habido en el pasado muchos fallos de los navegadores, o malas prácticas de programación, que han permitido robar cookies de forma remota. Y ni siquiera voy a mencionar que robarlas teniendo acceso físico a la computadora es trivial.

De todas formas siguen existiendo problemas a considerar, como el almacenamiento de los archivos de sesión, la posible transmisión del SID a otro sitio mediante enlaces referidos, u otros problemas de los que probablemente no tenga conocimiento.

Pienso que lo ideal sería hacer una segunda identificación del usuario, por ejemplo que una sesión (o cookie, tu decidirás qué vas a usar al final) esté asociada con una sola dirección IP.

Saludos.


Edito: estuve buscando información sobre este tema. Wikipedia tiene una especie de "resumen" de los problemas de seguridad de las sesiones y las cookies.
http://en.wikipedia.org/wiki/Session_fixation
http://en.wikipedia.org/wiki/Session_hijacking
http://en.wikipedia.org/wiki/Session_poisoning
http://en.wikipedia.org/wiki/HTTP_cookie

Me retracto de lo que escribí antes ("el usuario no tiene forma de falsearlo"). También me retracto (internamente, ya que nunca lo dije ) de la idea de que el servidor genera un SID con los datos del cliente y por tanto debía ser único: tenía esa idea en la cabeza pero está lejos de ser verdad.

Me queda claro (no es que me haya dado cuenta ahora...) que todos los sistemas tienen sus problemas. Seguramente las sesiones mal usadas son menos seguras que las cookies bien usadas.

Tengo que admitir que el concepto de autenticación con cookies sin sesiones no es inherentemente más inseguro que si se usan sesiones. después de todo, si el SID es lo único que valida al usuario, da lo mismo si se manda un SID o un par usuario/contraseña (si están cifrados de una forma que no sea sencilla de averiguar, claro está). Pero para eso se deben usar otros controles, sobretodo de validez de la sesión. Estamos de acuerdo en que una sesión controlada solamente por un SID es insegura, pero también es insegura una sesión controlada únicamente por usuario/contraseña.

Se usen sesiones o no, se debe enviar de alguna forma algo que identifique al usuario.
La ventaja de usar sesiones es que los controles están del lado del servidor, y no se necesita más que el SID para mantenerlas. Si los controles están en el servidor, no se pueden engañar (asumiendo que estén bien hechos)

Si se confía únicamente en cookies, habrá que enviar también algo que compruebe su validez. Si esto se manda en la cookie misma, puede falsearse de alguna forma. Si no se manda en la cookie (se almacena en el servidor) lo que se está haciendo es generar un sistema de sesiones paralelo al de PHP, lo cual es "malo": se estaría reimplementando un sistema de sesiones en vez de usar el que contiene PHP.

Sigo manteniendo, sin embargo, que un SID expira más pronto que una cookie y que un SID será inválido antes de que lo sea un par usuario/contraseña, por muy cifrados que estén.

De todas formas, "un sistema de autenticación con cookies sin sesiones" y "el sistema de autenticación usado en el primer mensaje de este tema" son cosas diferentes, muy diferentes.
El sistema creado en el primer mensaje no tiene ni siquiera un poco de seguridad. No hay protección contra inyección SQL, no hay cifrado de ninguna clase, no hay control de validez de la cookie (ni siquiera se le da un tiempo de validez "seguro").


Disculpen lo largo de la "edición", y lo terco que estaba siendo
Saludos.

Última edición por AlvaroG; 16/08/2008 a las 21:34
  #12 (permalink)  
Antiguo 17/08/2008, 13:36
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 2 meses
Puntos: 20
Respuesta: Problema Sesiones Cookies!

Alvlin, tienes razón en esto:

Cita:
Falso. Si consigue acceso a la cookie, puede enviar exactamente lo mismo que envía el usuario mediante cabeceras HTTP, ¡no necesita decodificar nada!
Me he despistado en ese detalle, que ya conocía, y eso que en otros post ya lo tenía en cuenta

El inicio de este post no tiene seguridad, pero tenía curiosidad por encontrarle parecidos a cookie y session. Un cambio de tema, vaya.

Sigue sin quedarme demasiado claro "qué es mejor" (para mi caso, claro). Las session me convencen por no poder acceder a los datos guardados (usuario y contraseña) del usuario. NO por lo manipulables que sean, ya que después su tratamiento con PHP impide insertar código malicioso, sino por poder verlas y copiarlas.

En tu conclusión, mantienes la idea de recordar la IP del usuario en la SESSION para que sirva con un PC único?

  #13 (permalink)  
Antiguo 17/08/2008, 13:52
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema Sesiones Cookies!

Más bien mantengo la idea de recordar la IP como un añadido a la seguridad, en realidad tampoco es un método infalible (pensá por ejemplo en una red local que tiene acceso a internet con una sola IP pública).


Saludos.
  #14 (permalink)  
Antiguo 17/08/2008, 13:54
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 2 meses
Puntos: 20
Respuesta: Problema Sesiones Cookies!

Infalible no hay nada, pero ya limita mucho las posibilidades ya que tienes que estar en el mismo lugar y a la misma hora que la "víctima".
  #15 (permalink)  
Antiguo 17/08/2008, 15:12
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema Sesiones Cookies!

100% de acuerdo david
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 01:55.