我正在尝试修改服务器端(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
。
答案 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时如何执行此操作的示例。