使用 Javascript 预防 WebSQL 注入

Posted

技术标签:

【中文标题】使用 Javascript 预防 WebSQL 注入【英文标题】:WebSQL injection prevention with Javascript 【发布时间】:2012-07-22 02:01:53 【问题描述】:

我已经四处搜索,但没有找到这个问题的答案。

javascript 中是否有类似于 phpmysql_real_escape_string 的函数,可以在将用户输入写入 WebSQL 数据库之前进行安全的用户输入?

如果没有,有人知道我可以使用的定制功能吗?

更新: 所以好像没有native函数,所以写了:

function sql_real_escape_string(val)
    var val = val.replace('"','"');
    val = val.replace('\'','’');
    return val;

为了安全起见,我还应该替换其他字符吗?

【问题讨论】:

WebSQL 已被弃用,并且在 2 年前停止了该规范的工作。您应该改用Indexed DB。 他确实使用了“phonegap”和“cordova”标签,所以我认为索引数据库不是一个选项,因为在 androidios 上不支持。否则我肯定会同意你的看法。 【参考方案1】:

在插入数据库时​​处理用户输入的最佳答案是使用参数化。 Web SQL API 支持这一点:

var db = openDatabase('mydb', '1.0', 'my database', 2 * 1024 * 1024);
db.transaction(function (tx) 
  tx.executeSql('INSERT INTO foo (id, text) VALUES (?, ?)', [id, userValue]);
);

而不是这个:

db.transaction(function (tx) 
  tx.executeSql('INSERT INTO foo (id, text) VALUES (1, "user-entered value")');
);

【讨论】:

我是Phonegap 的新手。我已经修改了我的代码,但将来会这样做。感谢您的提醒。

以上是关于使用 Javascript 预防 WebSQL 注入的主要内容,如果未能解决你的问题,请参考以下文章

WebSQL - 检查数据库的记录(javascript)

无限日期滚动 - WebSql JavaScript

javascript 本地数据库存储websql

HTML5 webSQL

Web SQL 数据库 + Javascript 循环

MongoDB 中的 JavaScript NoSQL 注入预防