2016-03-01 2 views
0

Я использую sqlite-porter с importSqlToDb(). Но теперь у меня проблема с одиночной квотой или с обратной косой чертой в строке. Есть ли решение для этого?Кордоба-sqlite-porter importSqlToDb sql injection

Becouse Я должен написать запрос sql следующим образом: «INSERT INTO Artist (Id, Title) VALUES ('1', 'Fred's ball \ shoe');"; и не может использовать параметр.

Спасибо заранее

ответ

0

Одинарные кавычки в значениях должны быть экранированы с помощью двойных одинарные кавычки в SQLite (see here). Обратные косые черты в порядке, как литералы. Таким образом, вы должны использовать:

"INSERT INTO Artist(Id,Title) VALUES ('1','Fred''s ball \ shoe');"; 

example project для cordova-sqlite-porter содержит complex example, который иллюстрирует использование как одиночных кавычек и обратной косой черты в строках значений, например:

INSERT INTO [Artist] ([ArtistId], [Name]) VALUES (88, 'Guns N'' Roses'); 

INSERT INTO [Track] ([TrackId], [Name], [AlbumId], [MediaTypeId], [GenreId], [Composer], [Milliseconds], [Bytes], [UnitPrice]) VALUES (3435, 'Cavalleria Rusticana \ Act \ Intermezzo Sinfonico', 302, 2, 24, 'Pietro Mascagni', 243436, 4001276, 0.99); 
+0

Привет, да, именно так! Но я получаю эту строку из службы, которая приносит ее как «Guns N 'Roses». Поэтому, если я создам sql-запрос с параметрами, проблем не будет, потому что он будет обрабатывать одиночные кавычки. Я не могу использовать регулярное выражение для замены одиночной кавычки, потому что эта строка, которую я получаю от службы, может содержать теги html, такие как «

bla bla this
». Есть ли функция, которая редактирует эту строку, как я бы вставлял с параметрами? – user1861065

+0

Независимо от того, как вы это делаете, вам нужно будет удвоить одиночные кавычки в значениях. Вы можете использовать регулярное выражение, даже если они содержатся в HTML. Просто нужно игнорировать одиночные кавычки в атрибутах. Что-то вроде этого: '/> (?: [^ <'] ​​* (') [^ <'] ​​*) * DaveAlden