Vous êtes actuellement hors ligne, en attente de reconnexion à Internet.

Comment faire pour révision de code ASP pour la vulnérabilité CSSI

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: 253119
Exclusion de responsabilité concernant les contenus obsolètes dans la Base de connaissances
Cet article concerne des produits pour lesquels Microsoft n'offre plus de support. Il est par conséquent fourni « en l'état » et ne sera plus mis à jour.
Résumé
Cet article explique comment identifier et correct applications ASP (Active Server Pages) qui sont susceptibles d'être à CSSI (cross-site scripting sécurité problèmes). Seule entrée qui est validée ou mise en forme n'est pas correctement, votre application vulnérable aux attaques.
Plus d'informations
Les étapes suivantes vous aider à identifier et corriger les applications ASP qui sont susceptibles d'être CSSI :
  1. Recherchez le code ASP qui génère du code HTML à afficher. ASP écrit le HTML dans la sortie de deux manières :
    Response.Write					
    - et -
    <% =					
  2. Déterminer si la sortie HTML comprend des paramètres d'entrée. Ces paramètres peuvent provenir de diverses sources. La liste suivante inclut des sources entrées courantes :

    Source d'entréeExemple de méthode d'accès au code ASP
    Collection Request.Form
    Response.Write Request.Form("username")									
    Collection Request.QueryString
    <%=Request.QueryString("username")%>									
    Response.Write Request.QueryString("username")									
    <a href="http://mysite/showuser.asp?username=<% = Request.QueryString("username") %>">mypage</a>									
    <a href="http://mysite/mypage.asp"><%=Request.QueryString("url")%></a>									
    Objet Request
    Response.Write("username")									
    Bases de données / méthodes de données Access
    Do While Not rst.EOF	Response.Write rst("myfield") & "<br>"	rst.MoveNextLoop									
    Collection de cookies
    Response.Write Request.Cookie("username")									
    Variables d'application et de session
    Response.Write Session("username")									
  3. Lorsque vous avez trouvé le code ASP qui génère du code HTML à l'aide d'une entrée, vous devez évaluer les solutions pour votre application. Les solutions ci-dessous présentent certains concepts généraux pour vous aider à commencer la prévention de CSSI.

    Veuillez Notez que lorsque le filtrage ou codage, vous devez spécifier un jeu de caractères pour vos pages Web pour vous assurer que votre filtre recherche les caractères spéciaux appropriés. Les données insérées dans vos pages Web doivent filtrer les séquences d'octets qui sont considérés comme spéciaux basée sur le jeu de caractère spécifique (jeu de caractères). Un jeu de caractères populaire est ISO 8859-1, qui est la valeur par défaut dans les premières versions de HTML et HTTP. Vous devez tenir compte des problèmes de localisation lorsque vous modifiez ces paramètres.
    • Utilisez la méthode HTMLEncode pour coder les paramètres d'entrée lors de la génération d'affichage.

      En règle générale, la plupart des attaques CSSI peut être empêchée simplement en utilisant HTMLEncode sur les paramètres d'entrée. À l'aide de HTMLEncode fonctionne en remplaçant les caractères qui ont des significations spéciales dans les variables HTML à HTML qui représentent ces caractères; (par exemple, & = &, "="). Veuillez Notez que seules les données devant être codé et pas les chaînes complets.
      <% Response.Write("Hello visitor <I>" +      Server.HTMLEncode(Request.Form("UserName")) +      "</I>");%> 						
    • HTTP_REFERER peut servir à limiter le domaine à partir de laquelle il est peuvent de soumettre les demandes.

      HTTP_REFERER retourne une chaîne qui contient l'URL de la demande d'origine lorsqu'une redirection s'est produite. Les serveurs Web peuvent vérifier le champ de point d'accès lorsqu'ils bénéficient d'un formulaire rempli et rejeter si il n'émane pas au bon endroit. Vous pouvez archiver le HTTP_REFERER la manière suivante :
         <%   If (Request.ServerVariables("HTTP_REFERER") = "") Or _      (Left(Request.ServerVariables("HTTP_REFERER"),42) <> _      "http://www.myserver.com/AppDir/mainfrm.asp") Then      Response.Redirect "http://www.myserver.com/AppDir/mainfrm.asp"   End If   %> 							
      Remarque : le champ point d'accès présente certaines limitations :
      • Vous risquez de blocage soumissions formulaire légitime.
      • Le lien peut-être provenir d'un message électronique ou un signet n'a pas une URL.
      • Navigateurs peuvent délibérément effacer le champ point d'accès, comme lors d'une demande HTTPS.
    • Utilisez URLEncode pour coder des URL reçus en tant que paramètres d'entrée.

      La méthode URLEncode applique les règles de codage des URL, y compris les caractères d'échappement, à une chaîne spécifiée. Vous devez coder des URL entrantes avant de les afficher. Voici un exemple pour URLEncode :
      <%      var BaseURL = http://www.mysite.com/search2.asp?searchagain=;      Response.write("<a href=\"" + BaseUrl +      Server.URLEncode(Request.QueryString("SearchString")) +      "\">click-me</a>");%>						
    • Supprimer ou modifier des caractères spéciaux à partir des paramètres d'entrée. Caractères spéciaux sont les suivants :
      < > " ' % ; ) ( & +							
      vous pouvez supprimer ou modifier les caractères lorsque vous lisez dans ou lorsque vous les affichez dans le navigateur en fonction de votre application.

      Cet exemple utilise JavaScript pour filtrer les caractères spéciaux :
      function RemoveBad(strTemp) { 	strTemp = strTemp.replace(/\<|\>|\"|\'|\%|\;|\(|\)|\&|\+|\-/g,""); return strTemp;} 							
      cet exemple utilise Visual Basic Scripting Edition version 5.0 des expressions régulières pour filtrer les caractères spéciaux :
      Function ValidateTags(QueryString)	Dim o	Set o = CreateObject("VBScript.RegExp") ' -> VB Script 5.0	Dim sBad	sBad = "(<\s*(script|object|applet|embed|form)\s*>)"   ' <  script xxx >	sbad = sbad & "|" & "(<.*>)"             ' >xxxxx<  warning includes hyperlinks and stuff between > and <	sbad = sbad & "|" & "(&.{1,5};)"   ' &xxxx;	sbad = sbad & "|" & "eval\s*\("    ' eval  (  	sbad = sbad & "|" & "(event\s*=)"  ' event  =		'Now lets check for encoding	sbad = Replace(sbad,"<", "(<|%60|<)")	sbad = Replace(sbad,">", "(>|%62|>)")		o.IgnoreCase = True 'ignore case of string	o.Global =False 'stop on first hit	o.Pattern = sBad	ValidateTags = o.Test(QueryString)	Set o = NothingEnd Function						
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 : 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é Scripting Cross-site pour les Applications Web
253121Comment faire pour révision de code MTS/ASP pour CSSI vulnérabilité
253120Comment faire pour révision code généré par Visual InterDev pour la vulnérabilité CSSI
253117Comment faire pour empêcher Internet Explorer et Outlook Express vulnérabilité CSSI
Microsoft fournit les coordonnées de sociétés tierces pour vous aider à trouver un support technique. Ces coordonnées peuvent être modifiés sans préavis. Microsoft ne garantit pas l'exactitude des informations concernant les tiers.

Avertissement : cet article a été traduit automatiquement

Propriétés

ID d'article : 253119 - Dernière mise à jour : 07/08/2005 23:40:15 - Révision : 1.3

Microsoft Active Server Pages 4.0

  • kbmt kbcodesnippet kbcssi kbhowto kbsecurity kbsecvulnerability KB253119 KbMtfr
Commentaires
ody>