2010-09-02 5 views
5

J'ai plusieurs zones de texte dans un formulaire Web ASP.NET. Je veux m'assurer que les utilisateurs sont et non en entrant du code HTML dans ces zones de texte. Cependant, je ne suis pas sûr comment empêcher le HTML d'être entré. Pour cette raison, j'ai décidé de ne permettre que les caractères alphanumériques, les espaces, les points d'exclamation, les signes aigus, les signes dollar, les signes de pourcentage, les carets, les étoiles et les parenthèses gauche et droite. J'omets l'esperluette parce que je ne veux pas qu'ils entrent quelque chose comme "< script &rt; ..."Comment empêcher l'entrée du code HTML dans la zone de texte du formulaire Web ASP.NET

Comment est-ce que je fais ceci? Est-ce que je le fais de la bonne façon?

Merci!

+0

Quelle que soit la méthode choisie, assurez-vous de valider votre saisie sur le client et sur le serveur. La validation client peut être facilement contournée avec un débogueur javascript. –

Répondre

1

Jetez un oeil ici http://msdn.microsoft.com/en-us/library/ff649310.aspx

Vous pouvez mettre une déclaration générale dans la configuration web ValidateRequest = true va vérifier toutes les entrées utilisateur et lancer une erreur si un utilisateur insère quelque chose de mauvais caractères.

Si vous devez autoriser certaines balises html, vous devrez alors les faire rouler.

+0

+1 c'est intégré ... (gérer l'erreur bien sûr). –

+0

-1: Je ne crois pas que lancer des erreurs/exceptions aux utilisateurs est une bonne pratique. Et ValidateRequest = true ne couvre pas toutes les formes de prévention XSS, si telle est l'intention. –

+0

@Caspar Kleijne pouvez-vous fournir des références à ValidateRequest ne couvrant pas toutes les formes de XSS? Je suis curieux de lire à ce sujet. Je pensais que Microsoft ferait mieux de saisir tous les cas d'intrants dangereux de l'utilisateur que je/ou le développeur moyen pourrait rouler les leurs. –

1

La page empêchera par défaut les utilisateurs d'afficher du code HTML ou un script dans des zones de texte ou des zones de texte. Voir MSDN

0

Vous pouvez utiliser une méthode pour nettoyer les codes HTML d'entrée comme:

public static string ClearHTML(string Str, Nullable<int> Character) 
{ 
    string MetinTxtRegex = Regex.Replace(Str, "<(.|\n)+?>", " "); 

    string MetinTxtSubStr = string.Empty; 

    if (Character.HasValue) 
    { 
     if (MetinTxtRegex.Length > Character) 
     { 
      MetinTxtSubStr = MetinTxtRegex.Substring(0, Character.Value); 
      MetinTxtSubStr = MetinTxtSubStr.Substring(0, MetinTxtSubStr.LastIndexOf(" ")) + "..."; 
     } 
     else 
     { 
      MetinTxtSubStr = MetinTxtRegex; 
     } 
    } 
    else 
    { 
     MetinTxtSubStr = MetinTxtRegex; 
    } 
    return MetinTxtSubStr; 
} 
0

Je l'ai utilisé:

HttpUtility.HtmlEncode(); 

Plus d'info here.

Questions connexes