【问题标题】:cordova-sqlite-porter importSqlToDb sql injectioncordova-sqlite-porter importSqlToDb sql 注入
【发布时间】:2016-03-01 15:44:33
【问题描述】:

我将 sqlite-porter 与 importSqlToDb() 一起使用。但是现在我遇到了单个配额或字符串中的反斜杠的问题。有解决方案吗?

因为我必须像这样编写 sql 查询:“INSERT INTO Artist(Id,Title) VALUES ('1','Fred's ball \ shoe');”;并且不能使用参数。

提前致谢

【问题讨论】:

    标签: javascript sqlite cordova cordova-plugins sql-insert


    【解决方案1】:

    值中的单引号应通过在 SQLite (see here) 中使用双单引号进行转义。反斜杠作为文字很好。所以你应该使用:

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

    cordova-sqlite-porterexample project 包含一个 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 标签,如“
      bla bla this
      ” .是否有一个函数可以编辑这个字符串,就像我会用参数插入一样?
    • 无论您如何操作,您都需要对值中的单引号进行双重转义。您可以使用正则表达式,即使它们包含在 HTML 中。它只需要忽略属性中的单引号。像这样的东西:/>(?:[^<']*(')[^<']*)*</g
    猜你喜欢
    • 2015-06-15
    • 1970-01-01
    • 2017-07-29
    • 2014-09-30
    • 2014-02-09
    • 2015-09-24
    • 2017-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多