2013-07-31 1 views
0

Мой CO-worker создал приведенный ниже код для iOS, чтобы сделать определенную пользователем строку SQL-поиска безопасной. т.е. удалить возможность SQL-инъекций и такого рода вещиAndroid - Сделать String SQL безопасным

char * sqlSafeQuery = sqlite3_mprintf("%q",[searchTerm UTF8String]); 

searchTerm = [NSString stringWithFormat:@"%s", sqlSafeQuery]; 

sqlite3_free(sqlSafeQuery); 

Есть ли способ в андроида так что-то подобное? Я не вижу многого в Google :)

Спасибо.

ответ

0

Вы можете использовать prepared statements, см. an Android question on how to use these in sqlite. Поскольку оператор анализируется без ввода пользователем в него, параметры не могут изменить сам оператор; таким образом, инъекция не может произойти.

+0

Подготовленные утверждения не могут использоваться для запросов, которые возвращают курсор, в котором я должен его использовать. спасибо за ваше предложение –

+0

В андроиде вы должны использовать [один из методов запроса] (http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#query%28java.lang.String,%20java .lang.String [],% 20java.lang.String,% 20java.lang.String [],% 20java.lang.String,% 20java.lang.String,% 20java.lang.String,% 20java.lang.String % 29), они возвращают курсор и поддерживают синтаксис, похожий на подготовленный оператор (вопросительные знаки в 'selection' заменяются значениями из' selectionArgs'). – dst

+0

Это я уже делаю, однако я не думаю, что это боевые вещи, такие как инъекции SQl, escape-символы и символы подстановочных знаков, это то, о чем я беспокоюсь. –

Смежные вопросы