Comment utiliser le contrôle HTML Editor ?

| Microsoft ASP.NET Team | Philippe Vialatte (Traduction) |

HTMLEditor est un contrôle ASP.NET AJAX qui vous permet facilement de créer et de modifier du contenu HTML grâce à des boutons dans une barre d'outils.

- Titre : Comment utiliser le contrôle HTML Editor ?

- Auteurs : Microsoft ASP.NET Team, Philippe Vialatte (Traduction)

- Parution : 3 mai 2009

- Mise à jour : 3 mai 2009

- Licence : Copyright ® 2009 Equipe Dotnet. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- Traduction

- Inroduction

- Affichage de l'éditeur HTML

- Personnalisation de la barre d'outils du HTML Editor

- Eviter les attaques de type Cross-Site Scripting (XSS) Attaques

- Résumé

Traduction

Cet article est la traduction la plus fidèle possible de l'article original : How do I use the HTML Editor Control?

Inroduction

Le but de ce tutoriel est de vous fournir un aperçu du contrôle HTML Editor inclus dans AJAX Control Toolkit. Le contrôle HTML Editor comprend des options pour changer la taille de la police, sélectionner une police de caractères, changer la couleur de fond, modifier la couleur de premier plan, ajouter des liens, ajouter des images, changer l'alignement du texte, ainsi que pour effectuer des couper, copier et coller (voir Figure 1).

L'éditeur HTML

L'éditeur HTML vous permet de saisir du contenu en mode design, ou d'entrer directement du code HTML. Vous obtenez également une option pour prévisualiser votre contenu HTML (voir Figure 2).

Boutons Design, HTML et Prévisualisation

Dans ce tutoriel, vous apprendrez comment afficher le HTMLEditor, comment personnaliser la barre de boutons qui apparaît dans l'éditeur, et comment éviter les attaques Cross-Site Scripting.

Affichage de l'éditeur HTML

Avant de pouvoir utiliser l'éditeur HTML dans une page ASP.NET, vous devez d'abord ajouter un contrôle ScriptManager à la page. Le contrôle ScriptManager est situé sous l'onglet Extensions AJAX dans la boîte à outils de Visual Studio/Visual Web Developer Express.

Vous devez placer le contrôle ScriptManager en haut de la page, avant les contrôles de la page. Par exemple, vous pouvez le placer immédiatement au-dessous de la balise <form>.

Le contrôle HTML Editor est situé dans la boîte à outils avec le reste des contrôles d'AJAX Control Toolkit. Il est nommé Editor (voir Figure 3).

Le contrôle HTML Editor

Après avoir fait glisser l'éditeur HTML sur une page, vous pouvez définir ses propriétés dans la feuille de propriétés. Par exemple, vous voulez normalement renseigner les propriétés Largeur et Hauteur. Le Listing 1 contient la source d'une page ASP.NET qui contient un éditeur HTML.

Listing 1 - SimpleEditor.aspx

<%@ Page Language="C#" %>
<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit.HTMLEditor" tagprefix="cc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

protected void btnSubmit_Click(object sender, EventArgs e)
{
ltlResult.Text = Editor1.Content;
}
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>

<asp:ScriptManager ID="ScriptManager1" runat="server" />

<cc1:Editor
ID="Editor1"
Width="450px"
Height="200px"
runat="server"/>
<br />
<asp:Button
id="btnSubmit"
Text="Submit"
Runat="server" onclick="btnSubmit_Click" />

<hr />
<h1>You Entered:</h1>

<asp:Literal
id="ltlResult"
Runat="server" />

</div>
</form>
</body>
</html>

La page du Listing 1 contient un contrôle HTML Editor, un contrôle Button et un contrôle Literal. Lorsque vous cliquez sur le bouton, le contenu de l'éditeur HTML apparaît dans le contrôle Literal (voir Figure 4).

Soumission d'un formulaire avec un HTML Editor

La propriété Content du HTML Editor est utilisée pour récupérer le contenu HTML entré dans le HTML Editor. Soyez conscient que ce contenu HTML peut contenir JavaScript. Dans la prochaine section, nous discutons de la façon dont vous pouvez empêcher les attaques par injection JavaScript.

Personnalisation de la barre d'outils du HTML Editor

Vous pouvez personnaliser exactement quels boutons apparaissent dans l'éditeur. Par exemple, vous pourriez souhaiter supprimer l'onglet HTML, pour empêcher les utilisateurs de passer de l'éditeur HTML au mode HTML. Ou encore, vous voudriez peut-être supprimer la liste déroulante de sélection de taille de la police afin d'empêcher les utilisateurs de créer un texte trop grand dans un message pour un forum (voir Figure 5).

Un éditeur HTML personnalisé

Vous pouvez personnaliser les boutons de la barre d'outils en faisant hériter un nouveau HTML Editor de la classe de base Editor. Par exemple, l'éditeur décrit dans le Listing 2 ne contient des boutons de barre d'outils que pour la gestion des caractères gras et italiques. Tous les autres boutons de barre d'outils ont été supprimés. En outre, l'onglet HTML a été retiré du bas de l'éditeur (mais les onglets Conception et Aperçu sont toujours là).

Listing 2 - App_Code\CustomEditor.cs

using AjaxControlToolkit.HTMLEditor;

namespace MyControls
{
public class CustomEditor : Editor
{
protected override void FillTopToolbar()
{
TopToolbar.Buttons.Add(new AjaxControlToolkit.HTMLEditor.ToolbarButton.Bold());
TopToolbar.Buttons.Add(new AjaxControlToolkit.HTMLEditor.ToolbarButton.Italic());
}

protected override void FillBottomToolbar()
{
BottomToolbar.Buttons.Add(new AjaxControlToolkit.HTMLEditor.ToolbarButton.DesignMode());
BottomToolbar.Buttons.Add(new AjaxControlToolkit.HTMLEditor.ToolbarButton.PreviewMode());
}
}
}

Vous devez ajouter la classe du Listing 2 à votre dossier App_Code, afin que la classe soit compilée automatiquement. Si le dossier App_Code n'existe pas dans votre site web, vous pouvez simplement ajouter le dossier.

Après avoir créé un éditeur personnalisé, vous pouvez l'ajouter à une page ASP.NET de la même manière que vous ajouteriez un HTML Editor normal (voir la liste 3).

Listing 3 - ShowCustomEditor.aspx

<%@ Page Language="C#" %>
<%@ Register namespace="MyControls" tagprefix="custom" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>Show Custom Editor</title>
</head>
<body>
<form id="form1" runat="server">
<div>

<asp:ScriptManager ID="ScriptManager1" runat="server" />

<custom:CustomEditor
Width="450px"
Height="200px"
runat="server" />

</div>
</form>
</body>
</html>

Eviter les attaques de type Cross-Site Scripting (XSS) Attaques

Chaque fois que vous acceptez une entrée d'un utilisateur, et que vous réaffichez cette entrée sur votre site web, vous ouvrez potentiellement votre site Web aux attaques Cross-Site Scripting (XSS). En théorie, un utilisateur malveillant pourrait envoyer du code JavaScript, qui serait exécuté quand l'entrée est à nouveau affichée. Ce JavaScript pourrait être utilisé pour voler des mots de passe ou d'autres informations sensibles.

Normalement, on peut vaincre les attaques XSS en encodant au format HTML toutes les entrées que vous récupérez à partir d'un utilisateur avant de l'afficher dans une page Web. Toutefois, l'encodage HTML du contenu de l'éditeur HTML n'encoderait pas seulement les balises <script>, mais aussi toutes les balises HTML. En d'autres termes, vous perdriez toutes les mise en forme telles que le type de police, la taille de la police et la couleur de fond.

Si vous collectez des données sensibles de vos utilisateurs (tels que les mots de passe, numéros de carte de crédit, et les numéros de sécurité sociale), alors il ne faut pas afficher un contenu non encodé que vous récupérez à partir d'un utilisateur avec l'éditeur HTML. Vous ne devriez utiliser l'éditeur HTML que dans des situations dans lesquelles vous ne réaffichez pas le contenu HTML, ou dans lequelles le contenu HTML est soumis à votre site Web par un tiers de confiance.

Imaginez, par exemple, que vous créez une application de blog. Dans cette situation, il est sensé d'utiliser l'éditeur HTML pour composer les posts du blog. Comme vous êtes la seule personne qui soumet des posts dans le blog, vous pouvez probablement avoir confiance en vous pour de ne pas soumettre JavaScript malveillant. Toutefois, il ne fait pas de sens d'utiliser le HTML Editor lorsque l'on permet aux utilisateurs anonymes de poster des commentaires. Vous devriez être particulièrement prudent dans les situations où les utilisateurs soumettent des informations sensibles telles que des mots de passe. Potentiellement, un utilisateur malveillant pourrait envoyer un commentaire qui contient juste le Javascript lui permettant de voler un mot de passe.

Résumé

Dans ce tutoriel, vous avez eu un bref aperçu du contrôle HTML Editor inclus dans le AJAX Control Toolkit. Vous avez appris à utiliser l'éditeur HTML pour accepter du contenu d'un utilisateur, et à de soumettre ce contenu sur le serveur. Nous avons également discuté de la façon dont vous pouvez personnaliser les boutons de barre d'outils qui sont affichés par l'éditeur HTML. Finally, you learned how to avoid Cross-Site Scripting Attacks when using the HTML Editor to accept potentially malicious input. Enfin, vous avez appris comment éviter les attaques de type Cross-Site Scripting lorsque vous utilisez l'éditeur HTML dans une situation ou vous pouvez potentiellement recevoir des entrées dangereuses.