最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

使用Nodejs和Postgres防止SQL注入

IT培训 admin 3浏览 0评论

使用Nodejs和Postgres防止SQL注入

我正在开发一个与PostgreSQL数据库进行交互的后端,并且正在寻找防止SQL注入的帮助。我了解SQL注入的概念,并且在网上找到了一些防止这些攻击的示例,但是不确定SQL提供程序之间的预防技术是否有所不同。

这是我用来查询数据的功能:

var pg = require("pg");

var client = new pg.Client(connectionString);
client.connect();

module.exports = async function newQuery(query) {
        var result = await client.query({
        rowMode: 'array',
        text: query
        });
        return result.rows
}

这是一些使用该函数(query())的标准查询:

SELECT

query("SELECT profilename, profiledescription, approved FROM profiledb 
WHERE usercompany='"+ req.query.userCompany +"';").then(data => {
        res.send(data)
    })

UPDATE

query("UPDATE profiledb SET approved='Approved' WHERE id='"+ req.query.id +"';").then(data =>
    res.send(data)
  )

INSERT

query("INSERT INTO profiledb (profilename, profiledescription, approved) VALUES ('"+ 
req.query.profileTitle +"', '"+ req.query.profileBody +"', 'Pending');");

我可以使用什么代码来查询数据而不会冒着SQL注入攻击的风险。

感谢!

回答如下:

使用parameterized query并将您的请求参数作为values传递。

values

module.exports = async function newQuery(query, values) {
    var result = await client.query({
        rowMode: 'array',
        text: query,
        values
    });
    return result.rows
}

query("SELECT profilename, profiledescription, approved FROM profiledb WHERE usercompany=$1;", [req.query.userCompany]).then(data => {
    res.send(data)
});

query("UPDATE profiledb SET approved='Approved' WHERE id=$1;", [req.query.id]).then(data => {
    res.send(data)
})

使用Nodejs和Postgres防止SQL注入

我正在开发一个与PostgreSQL数据库进行交互的后端,并且正在寻找防止SQL注入的帮助。我了解SQL注入的概念,并且在网上找到了一些防止这些攻击的示例,但是不确定SQL提供程序之间的预防技术是否有所不同。

这是我用来查询数据的功能:

var pg = require("pg");

var client = new pg.Client(connectionString);
client.connect();

module.exports = async function newQuery(query) {
        var result = await client.query({
        rowMode: 'array',
        text: query
        });
        return result.rows
}

这是一些使用该函数(query())的标准查询:

SELECT

query("SELECT profilename, profiledescription, approved FROM profiledb 
WHERE usercompany='"+ req.query.userCompany +"';").then(data => {
        res.send(data)
    })

UPDATE

query("UPDATE profiledb SET approved='Approved' WHERE id='"+ req.query.id +"';").then(data =>
    res.send(data)
  )

INSERT

query("INSERT INTO profiledb (profilename, profiledescription, approved) VALUES ('"+ 
req.query.profileTitle +"', '"+ req.query.profileBody +"', 'Pending');");

我可以使用什么代码来查询数据而不会冒着SQL注入攻击的风险。

感谢!

回答如下:

使用parameterized query并将您的请求参数作为values传递。

values

module.exports = async function newQuery(query, values) {
    var result = await client.query({
        rowMode: 'array',
        text: query,
        values
    });
    return result.rows
}

query("SELECT profilename, profiledescription, approved FROM profiledb WHERE usercompany=$1;", [req.query.userCompany]).then(data => {
    res.send(data)
});

query("UPDATE profiledb SET approved='Approved' WHERE id=$1;", [req.query.id]).then(data => {
    res.send(data)
})

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论