2013-05-26 1 views
2

Je lance OWASP Zap comme revue de sécurité pour notre code.Préparé une requête vulnérable à l'injection Sql

Une injection SQL est détectée lorsque nous utilisons preparequery et j'ai du mal à déterminer pourquoi? La base de notre code est:

DLPreparedQuery preparedQuery = this._env.Conn.Prepare("select a from Table1", 
        new DLDataTypes[] { DLDataTypes.BigInt, DLDataTypes.Char, DLDataTypes.BigInt, DLDataTypes.BigInt, DLDataTypes.Char, DLDataTypes.BigInt }, 
        new string[] { "@P1", "@P2", "@P3", "@P4", "@P5", "@P6" }, 
        DLQueryOptions.Default, -1); 

object[,] objResult = (object[,])preparedQuery.Query(1, 'ABC', 'DEF', 1,'AAA',21); 

échapperons aussi tout le texte d'entrée utilisateur avec AntiXSS en utilisant

Microsoft.Security.Application.Encoder.HtmlEncode (donnéesEntrée)

Y at-il des paramètres que je devrais être regardant à SQLServer?

Merci à l'avance.

+0

L'évasion que vous faites avec antixss est totalement fausse! Le HtmlEncode est (doit) utilisé uniquement lorsque vous affichez du texte sur votre page Web - n'a rien à voir avec l'injection SQL et les données que vous allez sauvegarder sur sql. – Aristos

Répondre

0

N'a pas travaillé avec preparequery mais je vous suggère d'exécuter sql profiler jusqu'à ce que vous identifiez l'instruction malveillante. Après avoir identifié comment la déclaration ressemble, vous saurez probablement quoi faire.

HtmlEncode ne fonctionne pas ici. Je vous suggère de remplacer le guillemet simple par deux guillemets simples. Ce n'est pas une solution pare-balles, mais il est susceptible de vous donner de bons résultats. Si votre base de données est en mode de récupération complète, vous pouvez essayer d'utiliser un lecteur de journal de transactions tiers pour analyser les instructions déjà exécutées et essayer d'identifier le problème.

Questions connexes