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

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  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 672 veces)
MiguelCanellas


Desconectado Desconectado

Mensajes: 639



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


🏴 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
1ABSD1rMTmNZHJrJP8AJhDNG1XbQjWcRz7
MiguelCanellas


Desconectado Desconectado

Mensajes: 639



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

[D]aniel


Desconectado Desconectado

Mensajes: 337



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
Pregunta sobre inyeccion en VB
Programación Visual Basic
Martinss 0 580 Último mensaje 10 Agosto 2006, 03:52 am
por Martinss
Fase Alpha lista,tendra vulnerabilidad de inyeccion?
PHP
ZharkD 8 2,126 Último mensaje 31 Mayo 2010, 16:54 pm
por ZharkD
reproducir vulnerabilidad inyeccion sql en php
Nivel Web
Erfiug 1 3,056 Último mensaje 17 Mayo 2011, 20:06 pm
por luiggy2
Consulta inyección de tráfico
Wireless en Linux
oktubre86 1 924 Último mensaje 18 Noviembre 2011, 23:28 pm
por heaviloto
[Pregunta]: Ejecutar esta consulta constantemente
PHP
MiguelCanellas 2 390 Último mensaje 15 Noviembre 2019, 00:17 am
por [u]nsigned
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines