Pregunta

Estoy escribiendo una aplicación C que toma algunas entradas del usuario y realiza algunas consultas de base de datos. Soy muy consciente de los riesgos aquí de la inyección de SQL y deseo prevenirlo.

Idealmente, usaría consultas parametrizadas, pero hasta ahora no he podido encontrar nada con esta funcionalidad en C. Actualmente estoy construyendo mis consultas como tales:

char *query;
asprintf(&query, "UPDATE SomeTable SET SomeField='%s';", userInput);

Si no puedo hacer esto, debo filtrar la entrada del usuario. ¿Cómo se debe hacer este filtrado? ¿Es suficiente eliminar todos los s y "s? (Las entradas válidas no pueden contenerlos). Si es así, ¿cuál es la forma más fácil de hacer esto en C?

¿Fue útil?

Solución

Creo que desea utilizar declaraciones preparadas y enlace de parámetros. No interpole directamente los datos del usuario en sus consultas. Ver el Manual MySQL Para obtener información sobre esto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top