2008-10-12 6 views
0

J'ai code comme ceci:LINQ to SQL InsertOnSubmit() sous réserve de SQL attaque par injection?

var newMsg = new Msg 
{ 
    Var1 = var1, 
    Var2 = var2 
}; 

using (AppDataContext appDataContext = new AppDataContext(ConnectionString)) 
{ 
    appDataContext.CClass.InsertOnSubmit(newMsg); 
    appDataContext.SubmitChanges(); 
} 

Après avoir lu this post je crois que le même applique la logique.

Est-ce que quelqu'un pense que cela est sujet à SQL Injection Attack?

Répondre

5

La deuxième réponse au message que vous faites référence le dit:

LINQ to SQL utilise execute_sql avec paramètres.

Il n'a pas concaténer les valeurs de propriété dans une grande INSERT ... VALUES ('... '' ...')

+0

Je ne suis pas sûr que ce ne ... il est juste une commande qui est paramétrés. execute_sql est utilisé pour faire la même chose de * dans * TSQL. –

+0

entrée d'utilisateur paramétrées est sûr de l'injection. Les attaques par injection ne s'appliquent que lorsque l'entrée de l'utilisateur est concaténée. –

1

Non, mais vous devriez être en train de valider les données de l'utilisateur de toute façon.

3

L'opération sous-jacente du DataContext est réalisé via le SqlCommand qui utilise SQL paramatised.

Donc, votre déclaration d'insertion ressemblera à ceci:

INSERT INTO [MSG] [Var1] = @p1, [Var2] = @p2