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

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  [Pregunta]: ¿Existe una vulnerabilidad de inyección en esta consulta?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Pregunta]: ¿Existe una vulnerabilidad de inyección en esta consulta?  (Leído 904 veces)
Leguim


Desconectado Desconectado

Mensajes: 675



Ver Perfil
[Pregunta]: ¿Existe una vulnerabilidad de inyección en esta consulta?
« en: 7 Diciembre 2020, 21:08 pm »

Hola,

uso las consultas "prepare" que tengo entendido ayudan a prevenir las inyecciones SQL, ahora bien también escuche que no es recomendable por este tema concatenar datos a una consulta.

No estoy del todo seguro si en este caso existe una vulnerabilidad de inyección:

Código
  1. class x
  2. {
  3.     static function Consulta($x, $y)
  4.     {
  5.            $con = Connection(username, password);
  6.            $query = $con->prepare('SELECT x_campo, y_campo FROM x_tabla WHERE '.($x).' = '.($y));
  7.            $query->execute();
  8.    $results = $query->fetchAll();
  9.  
  10.    return $results;
  11.     }
  12. }
  13.  

aclarar que tanto los parametros $x, como $y son constantes y no son datos que el usuario envía, un ejemplo:

Código
  1. $datos = x::Consulta('id_user', 61); // son constantes, no datos que un usuario ingresa


« Última modificación: 7 Diciembre 2020, 21:17 pm por MiguelCanellas » En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.605


🏴 Libertad!!!!!


Ver Perfil WWW
Re: [Pregunta]: ¿Existe una vulnerabilidad de inyección en esta consulta?
« Respuesta #1 en: 7 Diciembre 2020, 21:46 pm »

aclarar que tanto los parametros $x, como $y son constantes y no son datos que el usuario envía, un ejemplo:

Código
  1. $datos = x::Consulta('id_user', 61); // son constantes, no datos que un usuario ingresa

Correcto no es vulnerable solo por esa parte, por que aseguras que son constantes.

Los prepare statements ayudan a prevenir los SQL injection si, si y solo si se utilizan como debe de ser, es decir  utilizando la funcion diseñada para pasar los parametros al sql statement bindParam()

De otra forma y tomando los datos directo del input del user si serian vulnerables.

Saludos!


En línea

Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW
Leguim


Desconectado Desconectado

Mensajes: 675



Ver Perfil
Re: [Pregunta]: ¿Existe una vulnerabilidad de inyección en esta consulta?
« Respuesta #2 en: 12 Diciembre 2020, 19:00 pm »

Hola,

Código
  1. // tendría esto...
  2. $algo = 'algo';
  3. $algo_2 = 'algo';
  4.  
  5. $con = Connection(username, password);
  6. $query = $con->prepare('SELECT x, y FROM tabla WHERE x = :algo AND y = :algo_2');
  7. $query->execute(array(':algo' => $algo,
  8.                      ':algo_2' => $algo_2));
  9. $results = $query->fetchAll();
  10.  
  11. return $results;
  12.  
  13. // lo pasaría a esto, correcto?...
  14. $algo = 'algo';
  15. $algo_2 = 'algo';
  16.  
  17. $con = Connection(username, password);
  18. $query = $con->prepare('SELECT x, y FROM tabla WHERE x = :algo AND y = :algo_2');
  19. $query->execute(array(':algo' => bindParam($algo),
  20.                      ':algo_2' => bindParam($algo_2)));
  21. $results = $query->fetchAll();
  22.  
  23. return $results;
  24.  

Otra duda que me quedó es... entonces digamos que esas variables que había concatenado antes (arriba de todo, en el principio del tema) si no fueran constantes y si fueran datos que el usuario ingresa entonces SÍ habría una vulnerabilidad, no?

Gracias! (tardé en responder porque anduve bastante ocupado)
En línea

Danielㅤ


Conectado Conectado

Mensajes: 702


🔵🔵🔵🔵🔵🔵🔵🔵


Ver Perfil
Re: [Pregunta]: ¿Existe una vulnerabilidad de inyección en esta consulta?
« Respuesta #3 en: 12 Diciembre 2020, 20:37 pm »

Hola, todo dato ingresado por el usuario, tiene que ser sanitizado, nunca tenés que dejar pasar datos sin antes sanitizar, ni tampoco confiar en las restricciones que podes hacer desde javascript, eso serían solo avisos de que el usuario por ejemplo puede hacer tal cosa y tal otra no, PERO por detrás (del lado del servidor) se comprueba antes que lo que ingreso el usuario sea lo correcto.


Saludos
« Última modificación: 12 Diciembre 2020, 20:39 pm por [D]aniel » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Fase Alpha lista,tendra vulnerabilidad de inyeccion?
PHP
ZharkD 8 2,169 Último mensaje 31 Mayo 2010, 16:54 pm
por ZharkD
reproducir vulnerabilidad inyeccion sql en php
Nivel Web
Erfiug 1 3,100 Último mensaje 17 Mayo 2011, 20:06 pm
por luiggy2
[Pregunta]: Ejecutar esta consulta constantemente
PHP
Leguim 2 500 Último mensaje 15 Noviembre 2019, 00:17 am
por [u]nsigned
[Pregunta]: ¿Cómo hacer esta consulta 2?
Bases de Datos
Leguim 0 337 Último mensaje 23 Abril 2021, 00:07 am
por Leguim
[Pregunta]: ¿Qué estoy haciendo mal con esta consulta PDO?
PHP
Leguim 6 1,345 Último mensaje 6 Mayo 2021, 18:42 pm
por WHK
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines