Exigences : Le projet utilise le cadre EF ORM pour ajouter, supprimer, modifier et vérifier la base de données, mais face à des requêtes complexes, il peut ne pas être possible d’utiliser Linq et Lambda pour de meilleures requêtes, il nous faut donc utiliser EF 6 pour exécuter des instructions SQL natives pour les requêtes.
Requête SQL brute (EF6) :La connexion hyperlientérée est visible.
Puisque les instructions SQL doivent porter la condition where, la valeur du paramètre passe par le paramètre URL.
Tout d’abord, notre instruction SQL utilise la concaténation de chaînes pour interroger, comme suit :
Le code est le suivant :
Vous pouvez voir les instructions SQL exécutées par la base de données comme suit :
SELECT Name FROM [Classification] WHERE Name = 'Développement mobile' ; sélectionner 1 ; --' PasserLa manière dont les instructions SQL sont spliced est à risque d’injection。
Nous avons modifié le code pour prévenir les attaques d’injection SQL en paramétrant les requêtes, et le code est le suivant :
exécutif sp_executesql N’SELECT Name FROM [Classification] WHERE Name = @n',N'@n nvarchar(17)', @n=N’Mobile Dev'' ; sélectionner 1 ; --'
Au lieu d’utiliser directement le splicing, EF Core le convertit en instructions SQL paramétrées. Les références sont les suivantes :
(Fin)
|