2011-05-10 2 views
0

HI Tous,Remplacer dans le projet existant textbox par une nouvelle à l'exécution dans asp.net

J'ai besoin de vos suggestions/idée sur this.When nous avons commencé le projet, le client a dit que nous voulons accepter Potentially Dangerous HTML Tags(like img,script,link etc...) en zone de texte , et nous sauvons la valeur de la zone de texte dans la base de données.

Maintenant, le client veulent permettre à ces balises, mais que vous souhaitez enregistrer ces valeurs sous forme codée (pour éviter XSS)

Maintenant, je voulais juste savoir qui est-il possible en asp.net, de sorte que Je peux remplacer le comportement de toutes les zones de texte existant par un nouveau SafeTextbox avec des changements minimes (Je ne veux pas ajouter HtmlEncode ou HtmlDecode à chaque zone de texte.)

par exemple

public class NewTextBox:TextBox 
{ 
    public override string Text 
    { 
     get { return HttpUtility.HtmlDecode(base.Text); } 
     set { base.Text = HttpUtility.HtmlEncode(value); } 
    } 

} 

Lors de l'exécution

ProjectTextBox replaces with NewTextBox 
+0

êtes-vous ouvert à l'aide de javascript ou une bibliothèque comme jQuery? Vous pouvez facilement et globalement intercepter des publications de formulaire et encoder des chaînes de texte avant qu'elles ne soient publiées. – hunter

+1

Hunter, et si l'utilisateur avait Javascript désactivé? –

+0

@hunter: No Javascript –

Répondre

1

Vous pouvez consulter TagMapping dans ASP.NET.

http://msdn.microsoft.com/en-us/library/ms164641(v=vs.100).aspx

L'élément tagMapping définit un ensemble de types de points qui sont remappés à d'autres types de points au moment de la compilation. Ce remappage provoque l'utilisation du type mappé à la place du type de balise d'origine pour toutes les pages et tous les contrôles de l'application ASP.NET dans le cadre du fichier de configuration.

<pages> 
    <tagMapping> 
    <add tagType="System.Web.UI.WebControls.TextBox" 
      mappedTagType="Yournamespace.NewTextBox" 
    /> 
    </tagMapping> 

+0

Merci beaucoup ... Exactement ce que je cherchais ... + 1 –

1

Vous pouvez définir ValidateRequests true au niveau de la page ou pour toutes les pages de web.config.

Questions connexes