簡體   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