Inyección de SQL en una URL de servicio web como valor de parámetro [cerrado]

0

Obviamente, la inyección SQL a través de la carga útil de un mensaje es una práctica muy común y, por lo tanto, siempre es clave para cubrir esto (ya lo tengo en mi código). Sin embargo, me pregunto qué tan posible es para la inyección SQL a través de la URL y si esto es posible como un método real para la inyección SQL.

Daré una URL de ejemplo para detallar mejor mi pregunta. Si tengo una URL como esta con la declaración SQL que se usará para la inyección incluida dentro de un parámetro como su valor (tenga en cuenta que el 'SELECCIONAR' podría ser cualquier consulta SQL):

enlace

Me gustaría saber si esta es una forma válida y esto realmente funcionaría para los piratas informáticos en términos de intentar inyectar en el back-end del servicio web deseado y también, si es así, cuál es la mejor manera de cubrir para esto?

    
pregunta edwoollard 25.03.2015 - 00:50
fuente

2 respuestas

1

Las inyecciones de SQL no tienen nada que ver con si su aplicación acepta o no parámetros de URL. Trabajan con la entrada cualquier , ya sea la URL, el cuerpo de la solicitud, una cookie, un encabezado HTTP o incluso datos de su propia aplicación (por ejemplo, una cadena almacenada en su base de datos). No importa.

Entonces no se trata del origen de la entrada. Es lo que haces con la entrada. Si toma datos dinámicos y simplemente los inserta en una consulta SQL, esa es una vulnerabilidad potencial. Y, sí, esto sucede muy a menudo.

Las inyecciones de SQL no se pueden prevenir al verificar la entrada. Deben evitarse a nivel de base de datos, por ejemplo, utilizando declaraciones preparadas .

    
respondido por el Fleche 25.03.2015 - 01:18
fuente
0

Cualquier entrada al usuario, cuyo contenido se puede usar en una consulta de base de datos es un posible vector de inyección SQL. Por ejemplo, con su URL de ejemplo, dependiendo de la implementación de su servidor, esto podría funcionar:

https://testurl.com:1234/webservicename?parameter=DROP TABLE users;SELECT

La clave para prevenir la inyección de SQL es simple y lo entenderemos, siempre usaremos una consulta parametrizada y nunca concatenaremos la declaración SQL con las entradas del usuario con nada derivado de la consulta del usuario. Ni siquiera intentes escapar de las entradas, no funcionará.

    
respondido por el Lie Ryan 25.03.2015 - 01:19
fuente

Lea otras preguntas en las etiquetas