2010-11-12 2 views
1

J'ai un site Web ASP.NET géré par un blog. Sous le poste, il y a un bloc de commentaire pour laisser les lecteurs poster des commentaires.ASP.NET: Suis-je à l'abri de l'injection SQL et de XSS dans cette situation?

J'ai utilisé des TextBoxes et TextArea pour cela.

Pour éviter XSS:

J'ai filtré l'entrée à l'aide: Server.HtmlEncode() Méthode (je ne me soucie pas de la mise en forme de texte).

Pour éviter SQL Injection: (! Cela devrait être comme les requêtes paramétrées, je pense)

J'utilise LINQ to SQL.

Suis-je en sécurité maintenant?

cuz J'ai défini ValidateRequest = "false" dans la directive page.

Voici le code:

ArticlesDataClasses dc = new ArticlesDataClasses(); 

     ArticleComment newComm = new ArticleComment() 
     { 
      ArticleID = int.Parse(Request.QueryString["ArticleID"]), 
      CommentAuthor = Server.HtmlEncode(txtName.Text), 
      CommentText = Server.HtmlEncode(txtComment.InnerHtml).Replace("\n", "<br />"), 
      CommentAuthorEmail = Server.HtmlEncode(txtMail.Text), 
      CommentTime = DateTime.Now, 
      Enabled = false 
     }; 

     dc.ArticleComments.InsertOnSubmit(newComm); 
     dc.SubmitChanges(); 

Merci ..

+0

* il sonne * comme votre coffre-fort, mais pouvez-vous montrer le code à persister le commentaire à la base de données? c'est la partie la plus importante. (pour la prévention d'injection SQL) – RPM1984

+0

Merci, RPM1984, j'ai modifié le message et placé le code. –

+0

oui, votre coffre-fort. Un conseil cependant, vous devriez faire votre codage de dernière minute ailleurs (pas dans le code pour l'insertion). pour un, 'int.Parse' lancera une exception si le QS' ArticleID' n'est pas un INT. Devrait utiliser TryParse là, et oui, assainir l'entrée avant de faire votre sauvegarde. Mais globalement, tu as l'air OK. – RPM1984

Répondre

Questions connexes