Je veux paramétrer l'input de ma procédure stockée pour empêcher l'injection de sql. Le problème est que ma database n'a pas d'application (c'est juste pour l'école) et comme il n'y a pas de langage client comme C # etc, je dois le faire avec SQL lui-même. j'ai fait ça
ALTER procedure [dbo].[drop_tt] @ss varchar(40) as EXEC sp_executesql N'SELECT * FROM tt whERE ss = @Ss', N'@ss varchar(40)', @ss
mais quand j'exécute cette déclaration, la table tt a été supprimée 🙁 exec drop_tt 'www'; drop table tt– '
Quelqu'un peut-il aider?
En bref: pourquoi changez-vous sp? vous avez juste besoin de créer une procédure stockée paramétrée comme:
CREATE PROCEDURE uspGetAddress @City nvarchar(30) AS SELECT * FROM AdventureWorks.Person.Address WHERE City = @City GO
Il suffit de regarder ce tutoriel très simple , vous n'avez pas besoin de modifier vos procédures.
Edit: mon approche serait de se débarrasser de l'instruction EXEC sp_executesql
et de la dénomination qui commence par drop
. Essayez simplement de simplifier votre instruction d'exécution de procédure stockée dans le corps.