Como ya lo ha dicho @ThoriumBR, los desarrolladores cometen errores, debido a plazos, o incluso a veces la falta de conocimiento. Por lo tanto, el software debe probarse desde la perspectiva de seguridad durante el desarrollo, antes de la etapa de producción e incluso después de la producción. Aunque hay muchos marcos para diferentes lenguajes de programación que tienen un mecanismo para prevenir los ataques de inyección de SQL (por ejemplo, Entity Framework de Microsoft), la inyección de SQL sigue siendo una cosa.
Puede revisar las vulnerabilidades de inyección de SQL encontradas recientemente en Exploit DB si se busca con la palabra clave 'inyección SQL'. En la lista, puede descubrir que, incluso los marcos y aplicaciones populares y ampliamente utilizados tienen vulnerabilidades de inyección de SQL.