node.js中的变量查询

时间:2013-09-26 17:53:39

标签: javascript jquery ajax node.js

我正在尝试修改服务器端(node.js)上的查询,如下所示:

var http = require('http');
var query = "SELECT * FROM Users WHERE Email='Test.User@TestUser.com'";

这是硬编码查询。我正在尝试做这样的事情(电子邮件是从HTML文档中的输入文本区域引入的变量):

var http = require('http');
var query = "SELECT * FROM Users WHERE Email=" + "'" + email + "'";

我正在使用JQuery从javascript文件中处理这样的请求:

$.ajax({
        url: "http://127.0.0.1:8000/",
        type: "POST",
        success: function(dataRcvd) {
            alert(dataRcvd);
        }

如果我弄清楚如何执行此操作,我可以使用不同的SQL查询/存储过程动态更新var query

2 个答案:

答案 0 :(得分:0)

// server.js
var http = require('http');
function handler(req, res){
  console.log('Server got '+req.body.email);
  var query = "SELECT * FROM Users WHERE Email=" + "'" + req.body.email + "'";
  someAsyncSQLCall(query, function(rows){
    res.send(200, rows);
  });
};

http.createServer(handler).listen(3000);

//client.js
$.ajax({
        url: "http://127.0.0.1:8000/",
        type: "POST",
        data: {email: 'value' },
        success: function(dataRcvd) {
            alert(dataRcvd);
        }

答案 1 :(得分:0)

这是一个非常糟糕的主意(字符串连接);任何人都可以在您的表单中发布SQL注入攻击并丢弃您的数据库或做任何其他邪恶的事情。

我不确定你使用的是什么数据库,但是他们中的大多数都有办法进行参数化查询,以防止这些攻击。

Checkout node-postgres(pg模块),其中包含如果您使用PostgreSQL时如何执行此操作的示例。