Question

J'examinais les paramètres table-value dans SQL Server 2008 et j'ai découvert qu'en passant un tel paramètre à une procédure stockée, une requête telle que celle-ci est envoyée au serveur de base de données:

declare @p1 dbo.MyTypeName
insert into @p1 values(N'row1col1',N'row1col2')
insert into @p1 values(N'row2col1',N'row2col2')
insert into @p1 values(N'row3col1',N'row3col2')
insert into @p1 values(N'row4col1',N'row4col2')
insert into @p1 values(N'row5col1',N'row5col2')

exec StoredProcedureName @MyParam=@p1

Ma question est la suivante: quel est le degré de sécurité par rapport aux attaques par injection SQL, étant donné que les instructions insert ne sont pas paramétrées? J’ai tenté l’attaque la plus triviale contre elle, et les citations ont été correctement échappées, mais est-ce que quelqu'un a déjà effectué un test exhaustif ou y at-il autre chose qui pourrait me protéger?

Était-ce utile?

La solution

Vous n'avez pas à vous soucier des attaques par injection SQL avec les TVP.

  

Cela ressemble à un groupe de singleton   appelle mais ce n'est pas. Comme mon collègue   Keith Elmore de Microsoft CSS a souligné   out, c'est juste la convention utilisée   pour permettre aux données d'être affichées ou   copié / collé dans une fenêtre de requête et   courir. Le TVP n’est pas réellement   mis en œuvre de cette façon, les rangées sont   traversé comme une masse   insérer - mais cela peut avoir conduit à cette   impression que c'est simple   inserts.

Source: http://blogs.msdn.com/mikecha/archive/2009/08/07/two-fast-ways-to-bulk-insert-client-generated-data -to-sql-database.aspx

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top