【问题标题】:How do I escape data in Javascript for a client-side database like WebDB or Google Gears?如何在 Javascript 中为 WebDB 或 Google Gears 等客户端数据库转义数据?
【发布时间】:2011-05-18 23:11:20
【问题描述】:

如果我使用的是客户端数据库(如 Google Gears 或 WebDB 实现),那么转义数据以防止 SQL 注入的最佳方法是什么?把它包裹在 encodeURI() 中?

此外,我还需要担心吗?这里有一个简介,http://code.google.com/apis/gears/api_database.html#Database-execute,这让我觉得它是为我处理的,但我不确定。

【问题讨论】:

    标签: javascript database html google-gears web-sql


    【解决方案1】:

    如果您使用占位符,则不必担心引用/转义。所以这个:

    resultSet = db.execute (
      'INSERT INTO MYTABLE VALUES (?, ?, ?) WHERE id=?',
      [some, variables, that_you_got_from, somewhere]
    )
    

    原样没问题。如果您尝试通过将一堆字符串粘贴在一起来构建 SQL,那么您将会遇到问题,所以不要这样做。但是,在某些情况下,您需要将字符串粘贴在一起以获取 SQL,但有一些安全的方法可以解决;这样的事情往往是一种常见的情况,您可以同时使用占位符和字符串连接:

    var list = some_array_of_unknown_size_and_origin;
    var qs   = [ ];
    
    for(var i = 0; i < list.size; ++i) 
        qs.push('?');
    
    var rs = db.execute(
        'UPDATE some_table SET col = 'blahblah' WHERE id IN (' + qs.join(',') + ')',
        list
    );
    

    【讨论】:

      猜你喜欢
      • 2011-02-07
      • 1970-01-01
      • 2013-05-03
      • 1970-01-01
      • 2014-05-15
      • 2011-12-06
      • 1970-01-01
      • 2011-03-30
      • 1970-01-01
      相关资源
      最近更新 更多