Foros del Web » Programando para Internet » PHP »

Necesito una opinion general

Estas en el tema de Necesito una opinion general en el foro de PHP en Foros del Web. Bueno, estoy trabajando en un proyecto... y dejen les explico antes de exponer un consejo que me dieron (personalmente sin sentido) y que ademas, no ...
  #1 (permalink)  
Antiguo 10/09/2008, 00:53
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Necesito una opinion general

Bueno, estoy trabajando en un proyecto... y dejen les explico antes de exponer un consejo que me dieron (personalmente sin sentido) y que ademas, no pienso decir quien fue.... gracias


El punto, es que necesitamos dejar un servicio como anónimo si no se registra antes... bueno, para esto usamos sesiones... propias, en archivos serializados...

El problema radica en que se guardan usando la dirección del IP (o algo así) pero ahí es donde radica el problema... ya que se resetea el DSL y cambia de IP, osea... no hay sesión de nuevo :(


Pero se me ocurrió, dejar un cookie en el navegador con el ID de la sesión actual... si el IP se cambia, el sitio detecta la cookie con la sesión antigua.... copiándose sobre la sesión nueva y eliminando la obsoleta, debe funcionar... o no???

Esa es mi primer duda, debería funcionar.... según lo creo, pero... que piensan??


--

Pasemos a lo segundo, un amigo me decía que con agregar las dos lineas (que están comentadas [las del $save]) debería funcionar....

Porque -textual- "todas las funciones agrupan en blokes con arrays y return al final" (así me dijo el)

En si, su mensaje era este.... que cuando se trabajan muchos datos dentro de una función, necesitas una array al principio de la función.... y luego devolverlo, aunque en este caso... no es necesario y esta vacio!!

Debo mencionar, que esta no es una función natural... es mas bien, un método de una clase... no mas

y la verdad, me gustaría que analizaran el código y me dijeran si puede ser cierto...


Código PHP:
/**
 * (datos)
 *
 * Guarda la sesion, si hay datos son agregados.
 */
function save($data null)
{
//    $save = array();  <------- LINEA 1
    
if (is_array($data) || is_object($data))
    { 
// Inclusive, sobre-escribimos...
        
foreach ($data as $key => $val)
        {
            if (
is_numeric($key))
            { 
// solo cadenas...
                
return;
            }
            
$this->_data[$key] =& $val// xS
        
}
    }
    
write(tempfile('session'.DS.$this->_name),
            
serialize($this->_data));
    
    if (
cookie('session') !== $this->_name)
    { 
// guardamos por cookie/IP?
        
cookie('session'$this->_name864000);
    }
//return $save; <---------- LINEA 2


PDTA: la verdad, creo que no sirve para nada... ni siquiera interviene en absolutamente nada en el código real.... xS



--



NOTA: igualmente, me gustaría que comentaran... alguna otra metodología de conservar una sesión entre IP (si se puede!! ... si se puede!!!)

Gracias
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Última edición por pateketrueke; 10/09/2008 a las 01:11 Razón: ortografia
  #2 (permalink)  
Antiguo 10/09/2008, 02:56
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Necesito una opinion general

1. Efectivamente $save no sirve para nada.
2. No creo que sea buena idea lo que haces con la sesión y la cookie. Se presta a que alguien pueda robar una sesión. Es decir, si uno manipula una cookie en su navegador, tú automáticamente le das la sesión que corresponde a esa cookie? No parece buena idea, ¿no?

3. No sé exactamente lo que quieres hacer, pero claramente si un usuario no se registra/identifica, no creo que debas mantener sesiones de larga duración. O por lo menos no deberías confiar en que esas sesiones de larga duración sean válidas.
  #3 (permalink)  
Antiguo 10/09/2008, 03:34
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Necesito una opinion general

gracias!

Efectivamente, tienes razón en todos los puntos... pero aun así me quedan unas dudas, ya que experimente un poco y casi lo estoy logrando... (no lo se en verdad)

Demás. Quiero describir mas o menos cual es la idea, igual... y al final no se si se preste para "hacks" (no se, uds. dirán)


1.- El archivo de sesión se guarda con el nombre encriptado que contiene el IP y una marca dinámica que cambia por hora (esto genera un hash único e impenetrable)

a) Antes de cargar la sesión se comprueba la cookie, y si existe la referencia a la sesión en el servidor se copia al nuevo archivo de sesión y borramos el antiguo, si no....

b) Cargamos el archivo de sesión actual, y si la cookie ya no coincide pues la re-escribimos

2.- El archivo de sesión es inaccesible, ademas de que cambia de nombre constantemente
3.- El único modo de perder la sesión (ya que sirve aun, para los usuarios) es resetear el DSL para que cambie la IP y borrar las cookies
3.- Mientras no cambie el IP, la sesión es definitiva... si cambia, por eso esta su referencia almacenada en la cookie, será?


--

Lo pienso, por que el método tradicional son cookies... que son volátiles, pero.... PHP como hace esto internamente... supongo que por medio de IP, User-Agent, etc... no se, de veras

Por eso se me ocurrió algo así, no se este bien planteada la idea... quiero saber, demás...

gracias a todos, suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 10/09/2008, 15:35
Avatar de hawaiian050  
Fecha de Ingreso: junio-2007
Mensajes: 285
Antigüedad: 16 años, 10 meses
Puntos: 2
Respuesta: Necesito una opinion general

Que fenomeno ! postea y se responde solo que crack, nunca falla en sus aportes si supiera aportaba mi opiñon . Eso mismo buscaba yo .
  #5 (permalink)  
Antiguo 10/09/2008, 15:55
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Necesito una opinion general

Opinion de la función, no es necesario el array, ni que regrese un array, si ves el diagrama de como hace el proceso la función, no es necesario que retorne nada.

De tu otro método, a menos que no guardes datos confidenciales o especificos para el usuario tu método puede funcionar, claro que se presta a un ataque XSS y que te roben la cookie, y en ese caso el "atacante" puede obtener todos los datos de la sesión.

Las cookies PHP las maneja internamente de la misma manera que en Javascript etc. El manejo de las cookies es, se envia una linea con Set-Cookie al explorador, este crea un archivo (por lo general en el directorio temporal) y almacena la info en el, al volver a cargar la pagina el explorador le envia la cadena de Cookie en los headers a PHP, (con el contenido del cookie), PHP lee la cadena y popula el array $_COOKIE, entonces puedes leer su contenido via PHP.

Saludos.
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 19:12.