Cita:
Hacer un es un daño, pero aparte de tumbar el servicio no provee una ventaja. El ejemplo de los apostrofes es para obtener acceso (login) o eliminar un filtro del SQL. Ahora bien, una vez estas dentro, que es lo que sigue? Si no estas buscando tumbar el servicio, la opción logica es minar información. Es este punto donde entra el asunto del '%': Extraer info de los usuarios (averiguar la info de Bob): http://www.unixwiz.net/techtips/sql-injection.html Cita:
Injectando el sql desde un query de pagina & deduciendo la tabla que tiene los logins de usuarios: http://www.securiteam.com/securityre...DP0N1P76E.html Cita:
Osea, lo que falto aclarar antes es que el ejemplo clásico de inyección es de rompimiento (acceso), pero una vez dentro, es uso mas "tradicional" del sql, el conocimiento del lenguaje, el tipo de motor, entorno, etc. Hay se usa el rango completo, como acceso a tablas de sistemas, funciones, comandos de búsqueda (donde entra el %!!!), etc... El error mio fue presumir que era obvio que se puede usar cualquier comando del SQL con una inyección, sin ser claro en el porque.. Es por eso que se puede usar el '%' para una inyección, es cosa de darse cuenta que la inyección no solo rompe, sino que tambien extrae información. |
No hombre, no. Para que tú puedas poner una consulta como las de arriba, necesitas inyectarla. Y para eso es necesario que puedas poner apóstrofos sin restricciones. Una vez que puedes hacer esto entonces claro que puedes hacer uso del comodín para averiguar información. Pero el mal no está en el comodín en sí.
Es por eso que molesta ver este tipo de mensajes en donde se hace una afirmación que asusta y que no necesariamente es correcta. Digámoslo de otra manera. Un código como este:
deja abierta la puerta a la inyección SQL. Pero si escapamos los apóstrofos:
sigo sin ver dónde está el problema con que el usuario escriba un comodín. Los ejemplos que pones se basan en poder inyectar una sentencia con comodín pero gracias a que se deja abierta la puerta del apóstrofo. Es decir, no es que no entienda cómo usar el comodín para extraer información, una vez rota la entrada (usando tus términos). El caso es que el mensaje original dice, textualmente: Cita:
// Saludos |
Cita:
|
Cita:
Imagínate que tienes una ventana, en ella tienes un TEdit dónde se supone que el usuario ingresará un valor a buscar. En tu código la búsqueda la procesas así:
Si el usuario ingresa "101" en el TEdit, la consulta SQL anterior quedaría así: select * from clientes where no_cliente = 102. Pero supongamos que el usuario, en lugar de ingresar un número, ingresa en el TEdit algo cómo: "102; delete from clientes where 1=1;", la consulta anterior quedaría así: select * from clientes where no_cliente = 102; delete from clientes where 1=1;. Es obvio lo devastador que resultaría esta consulta, no? Eso es inyección de SQL. Es hacer que tu aplicación ingenuamente ejecute código SQL arbitrario, sea cuál sea. Esta vulnerabilidad hace a tu aplicación quedar como una tonta que hace todo lo que le dicen sin poner reparo. Saludos |
Cita:
Lo que puedo concluir hasta el momento es que no tiene ningún peligro permitir que el usuario escriba un comodín en la consulta. A menos, claro, que no escape (bien directamente o bien por el uso de parámetros) el apóstrofo, pero eso es harina de otro costal. // Saludos |
La franja horaria es GMT +2. Ahora son las 04:36:30. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi