Comment passer en revue le code MTS/ASP pour CSSI vulnérabilité

Traductions disponibles Traductions disponibles
Numéro d'article: 253121 - 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é

Cet article décrit comment identifier et corriger les applications de Microsoft Transaction Server/Active Server Pages (ASP) sont sensibles aux problèmes de sécurité de script (CSSI) cross-site. Seule entrée qui est validée ou mise en forme n'est pas correctement, votre application vulnérable aux attaques.

Plus d'informations

Problèmes CSSI émanent dans la manière dont une application traite la validation des données et de mise en forme, afin qu'il est mieux traité de la couche de présentation.

Cette couche sera généralement comportent de pages ASP et il peut parfois inclure certains composants qui aident dans le rendu de code HTML pour la page ASP à afficher.

Dans ce cas, il est important de noter que bien que l'application doit exécuter les mêmes opérations pour se protéger contre CSSI comme une application ASP uniquement, son implémentation physique entraînent une partie du code de validation/mise en forme pour s'exécuter dans les pages ASP et d'autres dans le composant. Pour plus d'informations sur CSSI et ASP, consultez l'article suivant de la base de connaissances Microsoft :
253119Comment passer en revue le code ASP pour CSSI vulnérabilité
Les étapes suivantes vous aideront à identifier et corriger les applications ASP susceptibles d'être CSSI :
  1. Recherchez les ASP ou composant code qui génère du code HTML à afficher. Il existe deux scénarios typiques :
    • Le composant génère et retourne une chaîne HTML qui ASP écrit directement dans la réponse.
    • Le composant appelle Response.Write en interne pour écrire directement dans la page. Généralement la référence d'objet de réponse est obtenue à partir d'ObjectContext en appelant GetObjectContext.Item("Response").
  2. Déterminez si la sortie HTML inclut des données d'application. Ces données peuvent provenir d'une variété de sources, telles que les bases de données, des fichiers de cookies, autres variables objet et ainsi de suite.
  3. Déterminez une solution appropriée. Qu'ils ont ASP ou un composant code généré à l'aide HTML par certaines entrées, vous devez déterminer une solution appropriée pour votre application. Solutions incluent (sans ne sont pas limitées à) validation/filtrage des données non valides ou il codage.

Instructions pour la mise en forme

Ces instructions vous aideront à identifier où s'attaquer à la mise en forme correctement.

Lors de l'écriture des informations dans une page, les données d'application spécifique doivent être HTMLEncoded. Il est important de pas à que HtmlEncode balises qui sont destinés à arriver dans la page HTML. Par conséquent, si votre composant fonctionne renvoient HTML, la HTMLEncode doit être effectuée qu'elles contiennent.

Pour HTMLEncode une chaîne à partir d'un composant, vous avez besoin d'une référence à l'objet de serveur ASP. Vous pouvez obtenir cette référence de la collection ObjectContext.Items MTS :
sGoodHTML = GetObjectContext.Item("Server").HTMLEncode(sRawData) 
				
exemple : ce code génère des lignes de la table de valeurs prises à partir d'un jeu d'enregistrements. Ce code ne code pas la sortie :
Do While Not oRecordset.EOF
     sHTML = sHTML & "<TR>" 
     sHTML = sHTML & "<TD>" & oRecordset("FirstName") & "</TD>"
     sHTML = sHTML & "<TD>" & oRecordset("Address") & "</TD>"
     sHTML = sHTML & "</TR>" 
Loop
				
lorsque ce code est fixé, notez que les valeurs elles-mêmes sont HTMLEncoded, plutôt que toute la chaîne HTML:
Dim oServer As ASPTypeLibrary.Server

Set oServer = GetObjectContext.Item("Server")

Do While Not oRecordset.EOF
     sHTML = sHTML & "<TR>" 
     sHTML = sHTML & "<TD>" & oServer.HTMLEncode( oRecordset("FirstName")) & "</TD>"
     sHTML = sHTML & "<TD>" & oServer.HTMLEncode( oRecordset("Address")) & "</TD>"
     sHTML = sHTML & "</TR>" 
Loop

Set oServer = Nothing
				
Notez l'utilisation de la référence d'objet intermédiaire oServer. Ce dernier est fourni pour tirer parti de la liaison anticipée et pour éviter la résolution de la recherche ObjectContext.Item chaque fois. Pour déclarer un objet comme ASPTypeLibrary.Server, vous devez inclure une référence à «Microsoft Active Server Pages bibliothèque d'objets.

Veuillez tenir compte les instructions suivantes :
  • Les composants métier ne doivent pas appeler HTMLEncode (sauf si elles sont également rendu HTML). Il s'agit d'une tâche de la couche de présentation.
  • En règle générale, composants à l'aide HTMLEncode ou un des objets ASP doivent exécuté physiquement sur le même ordinateur que Internet Information Server (IIS).
  • Solutions incluent (sans ne sont pas limitées à) validation des paramètres d'entrée et la mise en forme de paramètres d'entrée.

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
Pour plus d'informations, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la base de connaissances Microsoft :
252985Comment faire pour empêcher les problèmes de sécurité script intersite pour les applications Web
253120Comment passer en revue Visual InterDev généré le code pour CSSI vulnérabilité
253117Comment faire pour empêcher une vulnérabilité Internet Explorer et Outlook Express CSSI

Propriétés

Numéro d'article: 253121 - Dernière mise à jour: vendredi 7 février 2014 - Version: 2.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Transaction Services 2.0
Mots-clés : 
kbnosurvey kbarchive kbmt kbcssi kbhowto KB253121 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: 253121
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