Foros del Web » Programando para Internet » PHP »

"Seguridad" en Sitio

Estas en el tema de "Seguridad" en Sitio en el foro de PHP en Foros del Web. Hola a todos, pues el tema va relacionado con un post que había hecho con anterioridad... Existe algún riesgo (y si existe cual es?) en ...
  #1 (permalink)  
Antiguo 12/01/2016, 16:27
 
Fecha de Ingreso: diciembre-2015
Ubicación: México
Mensajes: 280
Antigüedad: 8 años, 11 meses
Puntos: 20
"Seguridad" en Sitio

Hola a todos, pues el tema va relacionado con un post que había hecho con anterioridad...

Existe algún riesgo (y si existe cual es?) en caso de que yo pudiera acceder desde un sitio A a un sitio B ?

Pongamos el ejemplo de éste sitio,
yo cree un formulario (en un servidor propio) apuntando al login de ésta pag (forosdelweb) , y al ingresar los datos y enviarlos, accedo de forma normal a la pág

Esto representa algún riesgo?
Cómo validar que efectivamente las peticiones se hacen desde tu propio sitio?

Saludos!
  #2 (permalink)  
Antiguo 12/01/2016, 17:04
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: "Seguridad" en Sitio

Cita:
Esto representa algún riesgo?
Sólo si el sitio está muy mal programado.

Cita:
Cómo validar que efectivamente las peticiones se hacen desde tu propio sitio?
Una técnica muy empleada es CSRF.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 12/01/2016, 17:55
 
Fecha de Ingreso: diciembre-2015
Ubicación: México
Mensajes: 280
Antigüedad: 8 años, 11 meses
Puntos: 20
Respuesta: "Seguridad" en Sitio

Hola amigo, gracias por tu respuesta!

Cita:
Iniciado por pateketrueke Ver Mensaje
Sólo si el sitio está muy mal programado.
Digamos q ese es el caso, que la programación fuera pésima...
Q es lo q un atacante podría lograr?

Cita:
Iniciado por pateketrueke Ver Mensaje
Una técnica muy empleada es CSRF.
He leído bastante (por lo visto no lo suficiente) sobre éste tema, y no acabo de comprender la técnica, o no sé si la esté implementando mal (q es lo mas seguro )

Lo que he entendido, es que se debe de crear un token (muy seguro) y para reforzar añadir una sesion ligada a él... pero, a final de cuentas yo siento q sólo es un parámetro más a la hora de hacer el envío de un formulario o petición AJAX,
crees que me podrías explicar más sobre ésta técnica?

Saludos!
  #4 (permalink)  
Antiguo 12/01/2016, 18:15
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: "Seguridad" en Sitio

Cita:
Q es lo q un atacante podría lograr?
Ataques como SQLInjection, CSRF, XSS.

Cita:
a final de cuentas yo siento q sólo es un parámetro más a la hora de hacer el envío de un formulario o petición AJAX,
El asunto es que sólo el servidor saber que generó, y al recibir el formulario compararía dicho valor contra lo que le provee el usuario.

Obviamente sólo harán "match" si son el mismo, y además es un valor que se regenera con cada petición de modo que cada usuario crearía un valor único y que cambia en la siguiente petición, etc.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 13/01/2016, 09:36
 
Fecha de Ingreso: diciembre-2015
Ubicación: México
Mensajes: 280
Antigüedad: 8 años, 11 meses
Puntos: 20
Respuesta: "Seguridad" en Sitio

Gracias por la respuesta!

Cita:
Iniciado por pateketrueke Ver Mensaje

El asunto es que sólo el servidor saber que generó, y al recibir el formulario compararía dicho valor contra lo que le provee el usuario.

Obviamente sólo harán "match" si son el mismo, y además es un valor que se regenera con cada petición de modo que cada usuario crearía un valor único y que cambia en la siguiente petición, etc.
Esto es precisamente lo que no comprendo del todo bien, y es a lo q me refiero con un parámetro más (como te comentaba, quiza mi implementación está mal, q es lo mas seguro )

Yo tengo un formulario de login, digamos, en mi index.php, en el cual creo un token, de la siguiente forma:


Archivo index.php

Código HTML:
Ver original
  1. <?php
  2.   $token =  //Creamos el token con algún método para generar un 'código' aleatoirio o encriptado (o ambos)
  3.  $_SESSION['token'] = $token;
  4. ?>
  5. <form action="ingresar.php" action="post">
  6.  <input type="text" name="user">
  7.  <input type="password" name="pass">
  8.  <input type="hidden" name="token" value="<?=$token?>">
  9.  <input type="submit" value="Ingresa">
  10. </form>

Después en mi archivo ingresar.php tengo lo siguiente

Archivo ingresar.php
Código PHP:
Ver original
  1. <?php
  2.    $token_recibido = $_POST['token];
  3.   if($_SESSION['token']==$token_recibido){
  4.    //Comprobamos las demás variables para hacer el login
  5. }
  6.  else{
  7.   //Acciones a seguir en caso de que el token no coincida
  8.  }
  9. ?>

Esa es la forma que yo entiendo de generar el token, pero a final de cuentas , es un valor más que se puede enviar desde una parte externa, y la sesión se crearía tan sólo con visitar mi página...
Sé que se pueden agregar más parámetros, como la caducidad del token o incluso otra session con el tiempo dado al usuario para realizar acciones , pero,
existe alguna otra forma más "segura"? o es q la implementación no es la correcta

Agradezco sus observaciones, saludos!!
  #6 (permalink)  
Antiguo 13/01/2016, 15:51
 
Fecha de Ingreso: enero-2016
Mensajes: 71
Antigüedad: 8 años, 10 meses
Puntos: 14
Respuesta: "Seguridad" en Sitio

Hola, creo que deberías entender como funciona una session... Una sesion es, al final una cookie pero solo guarda en el cliente una clave. Esta clave esta asociada con un fichero que contiene todos los datos (variables), la cosa es, el fichero se crea en el servidor no en el cliente. Un cliente no tiene acceso al archivo de sesion como en caso de cookie.

Por otro lado esto: "es un valor más que se puede enviar desde una parte externa" es verdad en parte ya que esta parte externa tiene que tener este valor, algo imposible ya que se guarda en el servidor el valor asi que no hay forma de obtenerlo o de establecer el valor a la session.
  #7 (permalink)  
Antiguo 13/01/2016, 18:06
 
Fecha de Ingreso: diciembre-2015
Ubicación: México
Mensajes: 280
Antigüedad: 8 años, 11 meses
Puntos: 20
Respuesta: "Seguridad" en Sitio

Hola amigo, gracias por la respuesta.

Cita:
Iniciado por x_atrix Ver Mensaje
Una sesion es, al final una cookie pero solo guarda en el cliente una clave. Esta clave esta asociada con un fichero que contiene todos los datos (variables), la cosa es, el fichero se crea en el servidor no en el cliente. Un cliente no tiene acceso al archivo de sesion como en caso de cookie.
Es cierto, como lo comentas, ese valor sólo se guarda en el servidor , PERO

Cita:
Iniciado por x_atrix Ver Mensaje
...
ya que esta parte externa tiene que tener este valor, algo imposible ya que se guarda en el servidor.
Y si en el cliente se genera esa clave asociada al fichero que está en servidor, no es lo mismo?
La "parte externa" tiene asociado el valor al server, imposible no diría yo
  #8 (permalink)  
Antiguo 13/01/2016, 19:32
 
Fecha de Ingreso: enero-2016
Mensajes: 71
Antigüedad: 8 años, 10 meses
Puntos: 14
Respuesta: "Seguridad" en Sitio

Cita:
Iniciado por german_1441 Ver Mensaje
Y si en el cliente se genera esa clave asociada al fichero que está en servidor, no es lo mismo?
Como?

Yo tengo el ID de sesion vmbrd66br8rsg83mssot159ie5, este ID esta asociado a un archivo que contiene el token obtenido por esta función:

Código PHP:
function generarToken() {
    
$cryptoStrong true;
    return 
bin2hex(openssl_random_pseudo_bytes(22$cryptoStrong));

Como sabes tu mi id de sesión para poder enviar la cookie? Por cierto, en puntos claves se debería actualizar el ID para evitar session fixation y session hijacking. session_regenerate_id()...

Si lo puedes hacer podrás atacar practicamente cualquier sitio web, pruebalo ... pero te tienes que inventar el ID de sesion... Lo que tienes es el token que esta en el archivo del servidor pero no sabes el ID de sesión.

Imagínate, si tu puedes conseguir mi ID de sesion de mi banco, podrías operar. Tu cookie asignada por el banco lo cambias con este ID que es mio y listo, tienes acceso a mi cuenta bancaria ... El "único problema" es conseguir el ID.
  #9 (permalink)  
Antiguo 14/01/2016, 09:50
 
Fecha de Ingreso: diciembre-2015
Ubicación: México
Mensajes: 280
Antigüedad: 8 años, 11 meses
Puntos: 20
Respuesta: "Seguridad" en Sitio

Hola amigo

Creo q nos desviamos en algún momento, o no nos entendimos...

Yo no me refiero a robar id de sesion o algo por el estilo, no me refiero a que yo pueda entrar con tu cuenta o algo parecido
Me refiero a que yo con mi misma cuenta, (por ejemplo en ésta pag), ingresar desde un sitio externo , es decir, ingresar a forosdelweb.com desde misitio.com (por ejemplo), como prevenir q eso pase, a lo mejor es muy tonto y a lo mejor no tiene mucho sentido.... pero quizá si :p
Es esa mi duda

Saludos!
  #10 (permalink)  
Antiguo 14/01/2016, 11:48
 
Fecha de Ingreso: enero-2016
Mensajes: 71
Antigüedad: 8 años, 10 meses
Puntos: 14
Respuesta: "Seguridad" en Sitio

Si, es algo muy tonto porque tienes que entrar en la pagina forosdelweb.com sin enviar el formulario, ver el token, copiarlo y ponerlo en mipagina.com ademas del ID de session tuyo y enviar el formulario desde ahi. Esto solo funciona de esta forma (siempre que no tenga control por IP, Navegador ...).

Pero, de que te sirve? Siempre que quiera enviar un formulario tienes que hacer este proceso... Solo funcionaria 1 vez con un token. Para volver a enviar este formulario, tienes que volver a entrar en forosdelweb.com para que vuelva a generar el token, lo vuelves a poner en mipagina.com y vuelves a enviar ... de que sirve esto?.

Si tienes el ID de sesion y el token, esto no lo puedes prevenir... pero tampoco veo el porque lo harías. Cual es el riesgo de seguridad aquí? Es el mismo usuario que si tiene acceso.
  #11 (permalink)  
Antiguo 14/01/2016, 13:08
 
Fecha de Ingreso: diciembre-2015
Ubicación: México
Mensajes: 280
Antigüedad: 8 años, 11 meses
Puntos: 20
Respuesta: "Seguridad" en Sitio

Gracias por la respuesta...

Cita:
Pero, de que te sirve? Siempre que quiera enviar un formulario tienes que hacer este proceso... Solo funcionaria 1 vez con un token. Para volver a enviar este formulario, tienes que volver a entrar en forosdelweb.com para que vuelva a generar el token, lo vuelves a poner en mipagina.com y vuelves a enviar ... de que sirve esto?.
Esa era mi pregunta precisamente, si eso sirve de algo jajaja; como comenté anteriormente, yo hice la prueba en ésta pág (forosdelweb.com), envío el formulario desde un sitio externo, y me ingresa.... ahora bien, intento hacer lo mismo con mi cuenta de facebook, y no me hace lo mismo, no me ingresa, al contrario, me manda una alerta de no ingresar datos fuera de facebook.com , y pues lo primero q pensé fue en que, si ellos validan eso, es por alguna razón... por eso fue mi pregunta

Cita:
Si tienes el ID de sesion y el token, esto no lo puedes prevenir... pero tampoco veo el porque lo harías. Cual es el riesgo de seguridad aquí? Es el mismo usuario que si tiene acceso.
Si, es el mismo usuario el que tiene el acceso, pero si el usuario no trata de ingresar sus datos? si se crea algun script (la verdad desconozco como se haría o si es posible hacerlo) para estar mandando peticiones con algun usuario conocido y contraseñas aleatorias?

Saludos
  #12 (permalink)  
Antiguo 14/01/2016, 14:53
 
Fecha de Ingreso: enero-2016
Mensajes: 71
Antigüedad: 8 años, 10 meses
Puntos: 14
Respuesta: "Seguridad" en Sitio

Para hacerlo aleatorio tienes que conocer el ID de sesion ... ese es el problema, llegamos a lo mismo. No puedes hacerlo.

Etiquetas: formulario
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 13:08.