Безопасная вставка данных в базу данных SQLite с апострофом - PullRequest
5 голосов
/ 31 марта 2011

Я пытаюсь создать таблицу в базе данных SQLite на основе предоставленного пользователем текста. Все работало правильно, за исключением случаев, когда я пытался добавить апостроф внутри текста (который должен был быть новым именем таблицы). После исследования я определил, что то, что я делал, не является лучшей практикой, так как уязвимо для инъекций:

    const char *sqlStr = [[NSString stringWithFormat:@"CREATE Table '%@' ('Name' 'char(50)','ID' 'integer')",theString]UTF8String];

Поэтому я пытаюсь найти способ, позволяющий включать апострофы в имя таблицы и безопасно вставлять значение в базу данных. Я читал о значениях привязки, но возможно ли это с помощью оператора CREATE TABLE? Или только когда вы вставляете данные в уже существующую таблицу?

Спасибо за вашу помощь.

1 Ответ

10 голосов
/ 31 марта 2011

Из документации :

Строковая константа формируется путем заключения строки в одинарные кавычки (').Одна кавычка в строке может быть закодирована путем помещения двух одинарных кавычек в строку - как в Паскале.

Таким образом:

[theString stringByReplacingOccurrencesOfString:@"'" withString:@"''"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...