Digamos que tienes el procedimiento:
CREATE PROCEDURE proceso(IN nombre CHAR(30), IN perteneciente INTEGER)
SELECT * FROM clientes WHERE nombres = nombre AND perteneciente_vendedor = numero;
Ahora tienes dos tablas, la tabla clientes y la de vendedores.
Digamos que cada vendedor puede ver los datos solamente de sus propios clientes, entonces hace algo así:
$sql = "call proceso('".$_POST['user']."', 3);";
Donde 3 es el id del vendedor, entonces el vendedor con identificación 3 obtendrá todos los datos del cliente pedro de esta forma:
index.php?nombre=pedro
Si este intenta obtener los datos de un cliente que no le pertenece como vendedor entonces debería retornar un valor vacio.
En este caso se puede hacer una inyección SQL para poder obtener los datos de cualquier cliente sin la necesidad de que te pertenezca:
index.php?nombre=pablo', 1); --
Las inyecciones sql pueden ser mas dificiles porque talves el atacante ya no pueda obtener los datos desde schema u obtener datos de otras tablas pero si puede lograr bypasear sistemas de accesos.
Todo depende de la query, por ejemplo smf tiene o tenía una inyección sql en base64 donde se la variable inyectada se repetía en dos ocasiones sobre la misma query, entonces tenías que hacer que la finalización de la consulta pudiera ser compatible con el inicio de la primera sin corromper toda la query xD y tenías que adaptarte a los saltos de linea también, etc.
Cada query puede ser vulnerada, una mas que otra, siempre y cuando no estén diseñadas en el lenguaje WEB correctamente, usando (int)$var en php para valores numéricos por ejemplo ya que aunque procedimiento si distingue el valor integer eso no impide que el usuario pueda inyectar código ya que el lenguaje web envía la query al servidor mysql en formato de texto plano sin una estructura que php pueda controlar a exepción de algunas clases que si lo hacen, unas de forma mas seguras que otras pero no es la solución.
No puedes prevenir una inyección realizando procedimientos aunque si se la haces mas dificil y mas aun cuando es blind, tampoco utilizando clases que manejen la query como un objeto, una buena programación sin inyecciones sql es mas simple de lo que se cree y por eso puse el último enlace en el post anterior:
http://foro.elhacker.net/nivel_web/como_evitar_la_inyeccion_sql-t252384.0.htmlAhora en asp, cgi perl, python, etc no se que funciones tendrán para hacer querys seguras pero en php si hay y es una sola.