Я разрабатываю бэкэнд для взаимодействия с базой данных 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)
})
ОБНОВЛЕНИЕ
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-инъекцией.
Спасибо !!!