Итак, у меня есть следующий объект, созданный по данным, предоставленным пользователем для регистрации:
var dataToInsert = {
userName: 'Wilson J',
userEmail: 'WilsonJ@gmail.com',
userAddress: '2020 St.',
userCellPhone: '95587412',
}
И я использую следующий запрос для его вставки:
var insertQuery = `INSERT INTO users ( ${Object.keys(dataToInsert).toString()} ) VALUES( '${Object.values(dataToInsert).join("','")}' )`;
Что в конце принимается как:
INSERT INTO
users (
userName,
userEmail,
userAddress,
userCellPhone
)
VALUES
(
'Wilson J',
'WilsonJ@gmail.com',
'2020 St',
95587412
)
Пока мне трудно понять, как работает экранирование данных.Я был бы очень признателен, если бы кто-нибудь мог показать мне, как SQL-инъекция может происходить с этим кодом и как его предотвратить.
Я использую модуль MysQl npm, и у него есть этот метод: mysql.escape()
, ноЯ хотел бы найти более автоматизированный подход вместо того, чтобы избегать каждого отдельного значения вручную.