web-dev-qa-db-fra.com

Comment empêcher sql-injection dans nodejs et sequelize?

Je souhaite écrire des requêtes personnalisées à l'aide de Sequelize et, dans la mesure du possible, éviter les problèmes potentiels avec SQL Injection. Ma question est donc s'il existe un moyen sécurisé d'écrire des requêtes personnalisées avec des variables insérées en utilisant Sequelize?

23
Bhargava Narayan K P

Sequelize échappe aux remplacements, ce qui évite le problème au cœur des attaques par injection SQL: les chaînes non échappées. Il prend également en charge les paramètres de liaison lors de l'utilisation de SQLite ou PostgreSQL, ce qui atténue davantage le risque en envoyant les paramètres à la base de données séparément pour la requête, comme indiqué ici :

Les paramètres de liaison sont comme des remplacements. Sauf que les remplacements sont échappés et insérés dans la requête par séquencement avant que la requête soit envoyée à la base de données, tandis que les paramètres de liaison sont envoyés à la base de données en dehors du texte de la requête SQL. Une requête peut avoir des paramètres de liaison ou des remplacements.

Seuls SQLite et PostgreSQL prennent en charge les paramètres de liaison. D'autres dialectes les insèrent dans la requête SQL de la même manière que pour les remplacements. Les paramètres de liaison sont référencés par $ 1, $ 2, ... (numérique) ou $ clé (alphanumérique). Ceci est indépendant du dialecte.

26
Dan Abrey