Не забравяйте, че SQL инжекциите се причиняват от враждебни низове, които се интерпретират като команди, а не от блокиране на команди. Сигурни ли сте, че получавате обратно оригиналния низ, а не низова версия?
Например има огромна разлика между тези две:"test"
и "'test'"
.
Обикновено само вредните символи се екранират, останалите се оставят както са.
Използването на драйвер от ниско ниво е най-добре да се избягва. Опитайте и използвайте библиотека като Sequelize за да осигури известна абстракция и повече подкрепа. Този модул поддържа изрази за контейнери, които обикновено правят екранирането непроблемно, то се обработва автоматично.
Вижте раздела за необработени заявки със замествания където имате възможност да направите това:
sequelize.query('SELECT * FROM projects WHERE status = ?',
{ replacements: ['active'], type: sequelize.QueryTypes.SELECT }
).then(function(projects) {
console.log(projects)
})
Няма риск от изтичане на потребителски данни, защото сте ги предоставили като изрична стойност, която се обработва правилно, а не като вграден низ в заявката.