[英]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.