繁体   English   中英

node.js中的变量查询

[英]Variable queries in 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

// 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);
        }

这是一个非常糟糕的主意(字符串串联)。 任何人都可以以您的形式发布SQL注入攻击并删除您的数据库,或执行许多其他恶意操作。

我不确定您使用的是哪个数据库,但是大多数数据库都有一种执行参数化查询的方法,可以使您免受这类攻击。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM