elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Manera correcta de hacer sesiones
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Manera correcta de hacer sesiones  (Leído 5,087 veces)
lord_Sirikon

Desconectado Desconectado

Mensajes: 151


Es sólo el silencio que precede a la tormenta.


Ver Perfil WWW
Manera correcta de hacer sesiones
« en: 26 Abril 2011, 14:30 pm »

Hola a todos, lo primero: se que hay algunos posts pero ninguno me termina de resolver la duda, segundo: gracias de antemano.

Estoy haciendo una página web (un proyectillo) y quiero poner usuarios, iniciar sesión y todo eso, se que es con el session_start() y eso pero por muchos métodos que pienso, siempre averiguo una forma para explotar ese método.

Cuál es la forma más correcta de utilizar las sesiones?

Me tomo esto muy en serio ya que al fin y al cabo son las contraseñas de los usuarios lo que está en juego

Salu2!


En línea

Feedeex

Desconectado Desconectado

Mensajes: 173


Ver Perfil
Re: Manera correcta de hacer sesiones
« Respuesta #1 en: 26 Abril 2011, 18:55 pm »

Las sesiones hasta donde llegan mis conocimientos son casi imposibles de explotar. Y digo casi porque nunca se sabe todo.
Es más, ni siquiera teniendo una vulnerabilidad XSS en tu sitio web podrían robarlas, ya que trabaja del lado del servidor, y no como las cookies.


En línea

Kase


Desconectado Desconectado

Mensajes: 1.288


programa bonito ¬¬


Ver Perfil WWW
Re: Manera correcta de hacer sesiones
« Respuesta #2 en: 26 Abril 2011, 19:14 pm »

exacto..
de todos modos si estas paranoico no hace falta que guardes el password en la session =]

yo en session guardo datos que probablemente utilizare en todas las paginas, como el nombre de usuario que utilizo para ponerlo en el menu

$_SESSION_['USUARIO'] = $usuario
y para cuando necesito saber si el usiario esta logueado   e echo 2 cosas

if(isset($_session_[usuario]))   devolvera true si tienes algo guardado en esa variable o false..

mi segunda opcion es un
$_session_[login] = true
if ($_session_[login])


si aun estas paranoico podrias cifrar todo con crypt()
al guardar session ases un
$session_[cifrado] = crypt("esto esta cifrado")

y al checar sus valores no olvides hacer crypts

if ($session[cifrado] == crypt("esto esta cifrado"))

crypt es de una sola via, asi que no hay metodo de desencriptacion...


detodos modos todo esto es incesesario...

lo que si es necesario es que en tu bd encriptes los passwords y eso loases asi:

insert into usuario (usuario,pass) values ('pepito',sh1('perez'));
sh1 convertira perez en una cadena cifrada de 40 caracteres =P

el problema eske si tu usuario pierde el password nunca podras decirle cual es... tendras que decirle que cree otro xD
En línea

RedZer


Desconectado Desconectado

Mensajes: 666



Ver Perfil
Re: Manera correcta de hacer sesiones
« Respuesta #3 en: 26 Abril 2011, 20:42 pm »

pues lo ago igual que los demas defino que utilizare sessiones
session_start();
creo las sessiones con sus respectivos valores
$_session['user']=$"mi valor";
y para destruirlas
session_destroy();

aqui esta otro manual de como usarla
http://www.php.net/session_register
En línea

Nacido y criado entre gente que enseño a pensar antes de creer a ciegas, Todo me causa curiosidad en el mundo
~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Manera correcta de hacer sesiones
« Respuesta #4 en: 26 Abril 2011, 22:14 pm »

Las sesiones hasta donde llegan mis conocimientos son casi imposibles de explotar. Y digo casi porque nunca se sabe todo.
Es más, ni siquiera teniendo una vulnerabilidad XSS en tu sitio web podrían robarlas, ya que trabaja del lado del servidor, y no como las cookies.

Te equivocas, la sesiones no trabajan del lado del servidor, solamente es un archivo que se almacena en el servidor que contiene la información y su nombre corresponde a la id.

Si te puedes fijar, al crear una sesión, se crea una cookie con el nombre PHPSESSID (Por defecto) que contiene la ID del archivo de sesión que esta alojado en el servidor. Si puedes obtener la Cookie PHPSESSID que tiene como valor la ID de sesión, puedes sacar provecho... Aveces la ID de sesion puede ir via COOKIE pero de igual manera via GET.

Session Hijacking
CSS History Hack In Firefox

if(isset($_session_[usuario]))   devolvera true si tienes algo guardado en esa variable o false..

Error, devuelve true si la sesion esta definida.


Las ID de sesiones genera PHP+Apache  casi imposible de adivinar, asi que por un lado son un poco mas segura, si sabes una forma de explotarlo puedes plantearla porque quizás te estés equivocando o la forma de explotarla como dices es por medio de otra vulnerabilidad.

Saludos.
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
RedZer


Desconectado Desconectado

Mensajes: 666



Ver Perfil
Re: Manera correcta de hacer sesiones
« Respuesta #5 en: 26 Abril 2011, 22:38 pm »

+10 ~ Yoya ~  ::)
En línea

Nacido y criado entre gente que enseño a pensar antes de creer a ciegas, Todo me causa curiosidad en el mundo
Feedeex

Desconectado Desconectado

Mensajes: 173


Ver Perfil
Re: Manera correcta de hacer sesiones
« Respuesta #6 en: 27 Abril 2011, 00:38 am »

@~ Yoya ~: ¿Y de que serviría obtener la ID de la sesión?. Si de todos modos es aleatoria y al destruirla muere.
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Manera correcta de hacer sesiones
« Respuesta #7 en: 27 Abril 2011, 01:11 am »

Puedes usarla para ver el contenido del archivo que tiene por nombre el ID de sesión, pero seria necesario tener acceso al servidor y es muy poco probable.

Ejemplo:
Código
  1. <?php
  2.  
  3. $_SESSION['hola'] = 'asa';
  4. ?>
  5.  

Código:
root@yoya:~# cat /var/lib/php5/sess_io8q0sh042ovjq6ssiicsg63n3
hola|s:3:"asa";


La otra opción, es la mas explotada. Seria sustituir tu ID de sesión por la que haz obtenido. Osea, si una web utiliza Sesiones para verificar que estas conectado y saber que rango tienes como puede ser admin, si logras obtener la ID de sesión esa persona estaria conectado/logueado como el rango que tiene, en este caso seria admin.

Saludos.
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
Feedeex

Desconectado Desconectado

Mensajes: 173


Ver Perfil
Re: Manera correcta de hacer sesiones
« Respuesta #8 en: 27 Abril 2011, 03:31 am »

Comprendo, gracias  ;D
En línea

Spider-Net


Desconectado Desconectado

Mensajes: 1.165


Un gran poder conlleva una gran responsabilidad


Ver Perfil WWW
Re: Manera correcta de hacer sesiones
« Respuesta #9 en: 29 Abril 2011, 16:05 pm »

Yo cuando uso sesiones o cookies lo que hago es comprobar que los datos son correctos en la base de datos antes de proceder.

Por ejemplo, cuando un usuario se identifica puedo crear una cookie o unas variables de sesion con el id del usuario y la contraseña cifrada en MD5 o SHA1, luego en cualquier parte del código que quiero mostrar sólo a usuarios logeados hago lo siguiente:

Código
  1. // primero compruebo que no están vacíos
  2. if(!empty($_SESSION['user']) && !empty($_SESSION['password']){
  3.      //conecto a la base de datos
  4.      $link=conectar();
  5.      $query=mysql_query("SELECT * FROM usuarios WHERE user='".mysql_real_escape_string($_SESSION['user'])."' AND password='".mysql_real_escape_string($_SESSION['password'])."'");
  6.      if(mysql_num_rows($query)>0){
  7.           // Si encuentra resultados quiere decir que el usuario tiene la información correcta en las variables de sesion
  8.           // AQUÍ YA ES SEGURO REALIZAR LAS OPERACIONES YA QUE EL USUARIO ES IDENTIFICADO CORRECTAMENTE
  9.      }
  10. }

Yo creo que hacer esto es imprescindible porque las variables de sesión y las cookies pueden ser modificadas por el usuario, por lo tanto si directamente usamos la información que hay en las cookies es fácil que nos provoquen una inyección sql o que manipulen el usuario y obtengan información sin realmente estar logeados. Por lo tanto creo que es lo más seguro, comprobar siempre que la información de sesión o de cookies se corresponde con la información de la base de datos antes de mostrar o procesar información de los usuarios.
« Última modificación: 29 Abril 2011, 16:10 pm por Spider-Net » En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines