Foros del Web » Programando para Internet » PHP »

Sesiones seguras php

Estas en el tema de Sesiones seguras php en el foro de PHP en Foros del Web. Hola se que las sesiones se pueden manipular pero no se como ni como se evita. Si tengo un codigo para comprobar sesion iniciada asi: ...
  #1 (permalink)  
Antiguo 28/06/2013, 13:33
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 10 meses
Puntos: 29
Sesiones seguras php

Hola se que las sesiones se pueden manipular pero no se como ni como se evita. Si tengo un codigo para comprobar sesion iniciada asi:

Código PHP:
Ver original
  1. if($_SESSION['user']==''){print 'No sesion';}

Seria seguro???

Si no es seguro donde fallo y que debo hacer para solucionar lo ?

Saludos
  #2 (permalink)  
Antiguo 28/06/2013, 14:48
Avatar de kike00  
Fecha de Ingreso: febrero-2005
Ubicación: El Salvador
Mensajes: 180
Antigüedad: 19 años, 9 meses
Puntos: 7
Respuesta: Sesiones seguras php

Las sesiones no son manipulables, ya que residen en el servidor. Lo que son manipulable son las variables $_POST y $_GET, ya que se pueden asignar su valores desde el cliente (navegador).
  #3 (permalink)  
Antiguo 28/06/2013, 18:09
Avatar de miguec04  
Fecha de Ingreso: agosto-2008
Ubicación: Cimitarra, Santander
Mensajes: 378
Antigüedad: 16 años, 3 meses
Puntos: 15
Respuesta: Sesiones seguras php

Para validar si existe y esta llena es mejor usar empty

http://php.net/manual/es/function.empty.php
__________________
Desoftc Technology - Miguel Carmona
Creaciones Inteligentes - Cimitarra Colombia
[email protected]
http://www.desoftc.com.co
  #4 (permalink)  
Antiguo 28/06/2013, 20:10
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
Puntos: 292
Respuesta: Sesiones seguras php

if (!isset($_SESSION['user']))
// no hay session


Ojo: sino chequea con isset te puede explotar en la cara
__________________
Salu2!
  #5 (permalink)  
Antiguo 29/06/2013, 02:08
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 10 meses
Puntos: 29
Respuesta: Sesiones seguras php

Hola a todos

kike00 si reciden en el servidor su funcionamiento funciona asi? :

1- El cliente crea una peticion hacia el servidor y este crea la sesion.

2- El cliente crea otra peticion y el servidor utiliza la sesion que tiene designada a la ip del cliente.

O sea que el servidor sabe que sesion a quien se corresponde por la ip? Ya que si no es el cliente quien los envia el servidor tiene que identificarlos de alguna manera ?

miguec04 y italico76 es mejor empty o isset. Yo creo que isset pero pregunto por si acaso.

Saludos
  #6 (permalink)  
Antiguo 29/06/2013, 17:26
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Sesiones seguras php

isset() sirve para saber si una variable está definida, sin importar el valor que pueda contener
empty() devuelve verdadero cuando:
- La variable no está definida
- Sí está definida pero el valor es NULL, false, 0, cadena vacía, etc.
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 29/06/2013, 20:47
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
Puntos: 292
Respuesta: Sesiones seguras php

La explicacion de Triby es la correcta, ahora... cual te sirve mejor ?

Es posible asignes a un usuario ID=0 / ID=NULL / ID=False / ID='' ? ahi la respuesta!


Creeria que no... pero isset() es la menos riesgosa
__________________
Salu2!
  #8 (permalink)  
Antiguo 30/06/2013, 02:10
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 10 meses
Puntos: 29
Respuesta: Sesiones seguras php

Ok entonces quedamos con que las sesiones son muy seguras y no se pueden aveariguarar o manipular.
  #9 (permalink)  
Antiguo 30/06/2013, 08:47
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
Puntos: 292
Respuesta: Sesiones seguras php

Es mejor vea Ud que le conviene, el tema es un poco mas complejo de lo que recordaba (que pena!)

Considerandos:

1) Es cierto que podria provenir un id=0 de una base de datos aunque no es lo mas comun porque los id autoincrementales empiezan de 1

2) Siempre hay definido un id ($_SESSION['id']=0) en variables de session

En el siguiente codigo de pruebas que le prepare, si el ID=0 y fuera eso correcto (asi estuviera en la DB)..vea que pasa:

Cita:
Ingreso con isset()
array (size=1)
'id' => int 0

Acceso denegado con !empty()
Código PHP:
<?php
session_start
();

/*
   Investigar:

   caso 1) session : [undefined]
   caso 2) session : id=0
   caso 3) session : id>0
*/

$_SESSION['id']=0;


if (isset(
$_SESSION['id'])){
   echo 
'Ingreso con isset()';
   
var_dump($_SESSION);
}else
   echo 
'Acceso denegado con isset()';


if (!empty(
$_SESSION['id'])){
   echo 
'Ingreso con !empty()';
   
var_dump($_SESSION);
}else
   echo 
'Acceso denegado con !empty()';
__________________
Salu2!

Última edición por Italico76; 30/06/2013 a las 09:24 Razón: uwe
  #10 (permalink)  
Antiguo 30/06/2013, 23:49
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 10 meses
Puntos: 29
Respuesta: Sesiones seguras php

Cita:
Iniciado por Italico76 Ver Mensaje
Es mejor vea Ud que le conviene, el tema es un poco mas complejo de lo que recordaba (que pena!)

Considerandos:

1) Es cierto que podria provenir un id=0 de una base de datos aunque no es lo mas comun porque los id autoincrementales empiezan de 1

2) Siempre hay definido un id ($_SESSION['id']=0) en variables de session

En el siguiente codigo de pruebas que le prepare, si el ID=0 y fuera eso correcto (asi estuviera en la DB)..vea que pasa:



Código PHP:
<?php
session_start
();

/*
   Investigar:

   caso 1) session : [undefined]
   caso 2) session : id=0
   caso 3) session : id>0
*/

$_SESSION['id']=0;


if (isset(
$_SESSION['id'])){
   echo 
'Ingreso con isset()';
   
var_dump($_SESSION);
}else
   echo 
'Acceso denegado con isset()';


if (!empty(
$_SESSION['id'])){
   echo 
'Ingreso con !empty()';
   
var_dump($_SESSION);
}else
   echo 
'Acceso denegado con !empty()';

Hola es cierto. Quedamos con isset() aunque si la base comienza por 1 seria mas facil usar empty() ya que es mas facil asignar a la session un 0 en vez de borrar la.

Etiquetas: 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 04:25.