Comment faire pour révision code généré par Visual InterDev pour la vulnérabilité CSSI

Traductions disponibles Traductions disponibles
Numéro d'article: 253120 - Voir les produits auxquels s'applique cet article
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
Agrandir tout | Réduire tout

Résumé

L'article suivant explique comment identifier et corriger des applications Visual InterDev qui sont susceptibles d'être CSSI (cross-site scripting problèmes de sécurité). Entrées uniquement ce qui sont validée ou mise en forme n'est pas correctement, votre application vulnérable aux attaques.

Cet article se concentre sur Visual InterDev Design Time Controls (DTC) et la bibliothèque de scripts. Pour les orientations générales concernant le code ASP, consultez l'article suivant de la base de connaissances :
253119Comment faire pour révision de code ASP pour la vulnérabilité pour CSSI

Plus d'informations

Le DTC Visual InterDev présentent des défis uniques pour les développeurs car une partie du code est généré automatiquement. Un développeur n'est peut-être pas familiarisé avec l'implémentation spécifique des objets de script sont générés et des vulnérabilités de leur ou comment mieux y remédier. Cet article couvre tous les problèmes connus avec différents contrôles DTC et elle couvre également les options possibles pour l'adressage de ces vulnérabilités.

Les problèmes se divisent en deux catégories spécifiques :
  1. Contrôles DTC sont l'objet d'un script pour afficher des données à partir d'une base de données et la base de données contient des entrées d'utilisateurs.
  2. Contrôles DTC sont l'objet d'un script pour afficher ou les données d'utilisation a été envoyées à partir du client.
Dans les deux cas, une validation correcte et le codage des valeurs de sortie empêche une page basée sur le DTC d'être utilisés dans une attaque CSSI.

Lors de l'utilisation de toute méthode d'un DTC qui récupère les informations à partir de ce DTC (telles que .getCaption .getText, .Value), lorsque la valeur a été définie à l'aide d'informations fournie par l'utilisateur, la chaîne résultante n'est HTMLEncoded pas. En outre, certains contrôles DTC qui peuvent être lié à un champ de base de données affichent les informations brutes à partir de la base de données sans codage. En tant que tel, vous ne devez HTMLEncode ces valeurs lors de l'affichage à un navigateur. Par exemple :
Response.Write Server.HTMLEncode(Textbox1.value)
				
si les données pour être utilisés dans le cadre d'une URL, vous devez plutôt utiliser URLEncode. Par exemple :
Response.Write "<A HREF=http://webserver/webapplication/page.asp?data=" & Server.URLEncode(Textbox1.value) & ">Click here!</A>"
				
car il existe plusieurs manières pour coder des caractères de code de script chargés, vous devez définir explicitement le caractère défini pour la page en le navigateur. Cela peut en insérant une balise <meta>côté client dans entre les balises <head>de votre document. Par exemple :
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset= ISO-LATIN-1">
				
Également cela à partir d'une page ASP à l'aide de la propriété Response.CharSet :

<% Response.Charset= "ISO-LATIN-1" %>
				


Voici quelques exemples courants :

Réduire ce tableauAgrandir ce tableau
AffichageExemple de code
Valeur d'un DTC de bouton
Response.Write Button1.Value()
Légende d'un DTC de CheckBox
Response.Write CheckBox1.getCaption()
Légende d'un contrôle Label DTC
Response.Write Label1.getCaption()
Texte d'un DTC ListBox
Response.Write Listbox1.getText()
Valeur d'un DTC OptionGroup
Response.Write OptionGroup1.getValue()
Valeur d'un DTC TextBox
Response.Write Textbox1.Value()


Vous trouverez ici des solutions possibles pour ces exemples :

Réduire ce tableauAgrandir ce tableau
AffichageExemple de code
Valeur d'un DTC de bouton
Response.Write Server.HTMLEncode(Button1.Value())
Légende d'un DTC de CheckBox
Response.Write Server.HTMLEncode(CheckBox1.getCaption())
Légende d'un contrôle Label DTC
Response.Write Server.HTMLEncode(Label1.getCaption())
Texte d'un DTC ListBox
Response.Write Server.HTMLEncode(Listbox1.getText())
Valeur d'un DTC OptionGroup
Response.Write Server.HTMLEncode(OptionGroup1.getValue())
Valeur d'un DTC TextBox
Response.Write Server.HTMLEncode(Textbox1.Value())


Le DTC de grille n'effectue pas les valeurs de HTMLEncode récupérées à partir d'une base de données. Si votre base de données accepte des entrées d'utilisateur (par exemple, un livre d'or), vous devriez HTMLEncode votre sortie. Pour ce faire, cliquez sur le l'onglet données dans la boîte de dialogue Propriétés de grille et en tapant :
=Server.HTMLEncode([fieldname])
				
où nom_champ correspond au nom de chaque champ s'affiche pour cette colonne. La plupart des contrôles DTC automatiquement HTMLEncode données récupérées d'une base de données lors de l'affichage, certains non. Ces contrôles devraient vous utilisez du code supplémentaire afin que la sortie vers un client est correctement HTMLEncoded.

Remarque : Contrôles DTC implémentent généralement automatiquement la logique nécessaire pour conserver leur état au cours d'allers-retours vers le serveur. Dans le cas du DTC TextBox par exemple, lorsque les informations sont arrondi déplacées vers le serveur, la page de bibliothèque de script Textbox.asp correctement HTMLEncodes le contenu du texte zone dans le processus de gestion de l'état du contrôle.

Références

Pour plus d'informations, consultez le bulletin de sécurité suivante à partir de CERT (Computer Emergency Response Team) de Carnegie Mellon University :
http://www.cert.org/advisories/CA-2000-02.html
Veuillez consultez les articles suivants de la base de connaissances pour plus d'informations :
252985Comment faire pour empêcher les problèmes de sécurité Scripting Cross-site pour les Applications Web
253119Comment faire pour révision de code ASP pour la vulnérabilité CSSI
253121Comment faire pour révision de code MTS/ASP pour CSSI vulnérabilité
253117Empêcher Internet Explorer et Outlook Express Cross-site scripting sécurité problèmes

Propriétés

Numéro d'article: 253120 - Dernière mise à jour: dimanche 2 février 2014 - Version: 1.4
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual InterDev 6.0 Édition standard
Mots-clés : 
kbnosurvey kbarchive kbmt kbcssi kbctrl kbhowto kbsecurity kbsecvulnerability KB253120 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 253120
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com