Мне нужна помощь в исправлении написанной мной функции (в микросервисе node.js без сервера) для предотвращения внедрения SQL.Я новичок в вопросах безопасности, поэтому любые идеи или указания в правильном направлении были бы замечательными, спасибо!
Вот функция из RecipientAlerts.js:
updateRecipient(email, body, callback) {
helper.removeRecipient(this.db, email) // clears old data
.then(() => {
const values = Object.keys(body).map(industry =>
body[industry].map(company =>
`('${company}', '${industry}', '${email}')`).join(', ')).join(', ');
const insert =`INSERT INTO recipient_list(company, industry, email_address) VALUES `;
this.db.queries.none(insert + values)
.catch((error) => {
console.log(error, 'error on insert query', callback);
});
})
.then(() => {
console.log('successfully updated', null, callback);
})
.catch((error) => {
console.log(error, 'failed to update recipient', callback);
});
}
Вот receient.json :
{
"pathParameters": {
"email": "john@gmail.com"
},
"body": {
"tech": ["Apple"],
"hospitality": ["McDonalds", "Subway"],
"banking": ["Citi", "HSBC"]
}
}
Ожидаемый результат (который я сейчас получаю и хочу остаться прежним): receient_list таблица:
company | industry | email_address
______________|_____________|________________
Apple | tech | john@gmail.com
--------------|-------------|---------------
McDonalds | hospitality | john@gmail.com
--------------|-------------|---------------
Subway | hospitality | john@gmail.com
--------------|-------------|---------------
Citi | banking | john@gmail.com
--------------|-------------|---------------
HSBC | banking | john@gmail.com