0
我使用sqlite-porter与importSqlToDb()。但现在我遇到了单个配额或字符串中带有反斜杠的问题。有没有解决方案?我想写这样的sql查询:“INSERT INTO Artist(Id,Title)VALUES('1','Fred's ball \ shoe');”;并且不能使用参数。cordova-sqlite-porter importSqlToDb sql注入
在此先感谢价值观
我使用sqlite-porter与importSqlToDb()。但现在我遇到了单个配额或字符串中带有反斜杠的问题。有没有解决方案?我想写这样的sql查询:“INSERT INTO Artist(Id,Title)VALUES('1','Fred's ball \ shoe');”;并且不能使用参数。cordova-sqlite-porter importSqlToDb sql注入
在此先感谢价值观
单引号应该在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);
你好,是的,这是正确的!但是我从一个服务中获得这个字符串,这个字符串就像'Guns N'Roses'一样。所以,如果我使用参数创建sql查询,就不会有问题,因为它会处理单引号。我不能使用正则表达式来替换单引号,因为我从服务接收到的这个字符串可以包含像“
无论你如何做,你都需要在数值中加倍转义单引号。即使它们包含在HTML中,也可以使用正则表达式。它只需要忽略属性中的单引号。像这样:'/>(?:[^ <'] *(')[^ <'] *)* g' – DaveAlden