我是 node-postgres 的新手,当我尝试确保使用准备好的语句无法进行 sql 注入时,我无法解决此错误。
这是代码片段
// the prepared statement
var preparedstatement = client.query({
text: "select ST_AsText(ST_Transform(geodata,4326)) from table_name where ST_Contains(ST_GeomFromText($1,4326),table_name.geodata)",
values: ["POINT(Lat Long)"],
name: 'where'
});
// the query
var queryresult = client.query({name: 'where', values: [msg]},["'; DROP TABLE user;"], function(err) {
if (err) {
socket.emit('query error', String(err));
}
});
每当我输入地理数据(作为来自使用 socket.io 的客户端的消息)时,socket.emit 返回一个错误说
无效几何
但是,当我["'; DROP TABLE user;"],
从代码中删除时,代码工作正常,即
// the query
var queryresult = client.query({name: 'where', values: [msg]}, function(err) {
if (err) {
socket.emit('query error', String(err));
}
});
(上)完美运行。帮助我理解我在这里做错了什么的任何帮助都会很棒。