Question

Je suis en train d'écrire une application C qui prend une entrée d'utilisateur et fait quelques requêtes de bases de données. Je suis bien conscient des risques d'injection ici et je souhaite SQL pour l'empêcher.

Idéalement je voudrais utiliser des requêtes paramétrées, mais ont été incapables de trouver quoi que ce soit avec cette fonctionnalité dans C jusqu'à présent. Je suis en train de construire mes requêtes en tant que tel:

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

Si je ne parviens pas à faire cela, alors je dois besoin de filtrer l'entrée d'utilisateur. Comment ce filtrage doit être fait? Est-il suffisant de simplement enlever tous s » et « s? (Entrées valides ne peuvent pas les contenir). Si oui, quelle est la meilleure façon de le faire en C?

Était-ce utile?

La solution

Je crois que vous voulez utiliser des instructions préparées et la liaison des paramètres. Ne pas directement les données utilisateur Interpole dans vos requêtes. Voir MySQL manuel pour plus d'informations à ce sujet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top