Вопрос

Я пишу приложение C, которое принимает некоторый пользовательский ввод и выполняет несколько запросов базы данных. Я хорошо знаю о риске здесь инъекции SQL и хочу предотвратить его.

В идеале я бы использовал параметризованные запросы, но пока не смог найти что -либо в этой функции в C. В настоящее время я строю свои запросы как таковые:

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

Если я не могу это сделать, то мне нужно отфильтровать пользовательский ввод. Как сделать эту фильтрацию? Достаточно ли этого, чтобы просто удалить все и "s? (Допустимые входы не могут их содержать). Если да, то какой простой способ сделать это в C?

Это было полезно?

Решение

Я считаю, что вы хотите использовать подготовленные операторы и привязку параметров. Не перемещайте пользовательские данные в свои запросы. Увидеть MySQL Руководство Для получения информации об этом.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top