Comment faire pour empêcher les problèmes de sécurité de script entre sites

Traductions disponibles Traductions disponibles
Numéro d'article: 252985 - Voir les produits auxquels s'applique cet article
Avertissement
Cet article s'applique à Windows 2000. Prise en charge pour Windows 2000 s'achève le 13 juillet 2010,. Le Windows 2000 End-of-Support Solution Center est un point de départ pour planifier votre stratégie de migration à partir de Windows 2000. Pour plus d'informations, consultez la Microsoft Support Lifecycle Policy.
Agrandir tout | Réduire tout

Sommaire

Résumé

Pages HTML générées dynamiquement peuvent introduire des risques de sécurité si les entrées ne sont pas validées sur la façon dans ou sur la façon dont les. Un script malveillant peut être incorporé au sein d'une entrée qui est soumise à des pages Web et qui apparaissent aux navigateurs comme originaires d'une source fiable. Ce problème est appelé un problème de sécurité de script entre sites. Cet article traite des problèmes de sécurité de script inter-sites, ramifications et prévention.

Plus d'informations

Le problème

Le problème sous-jacent est que de nombreuses pages Web affichent des entrées qui ne sont pas validée. Si entrée n'est pas validée, un script malveillant peut être incorporé dans l'entrée. Si un script côté serveur puis affiche cette entrée non validées, le script s'exécute sur le navigateur comme si le site de confiance le généré.

Ramifications

Si entrée dans vos pages Web dynamiques n'est pas validée, vous pouvez rencontrer les problèmes suivants :
  • L'intégrité des données peut être compromise.
  • Les cookies peuvent définir et lire.
  • L'entrée d'utilisateur peut être interceptée.
  • Des scripts malveillants peuvent être exécutées par le client dans le cadre de la source de confiance.
Les pages Web sont exposés ? L'essentiel, le problème affecte la création d'une page dynamique en fonction de l'entrée n'a pas été validée. Exemples typiques comprennent les types suivants de pages Web :
  • Moteurs de recherche qui renvoient des pages de résultats en fonction de l'entrée utilisateur.
  • Pages de connexion stockent des comptes d'utilisateurs dans les bases de données, les cookies et ainsi de suite et ultérieurement écrire le nom d'utilisateur sur le client.
  • Formulaires Web qui traitent les informations de carte de crédit.

Prévention

Cette section présente quelques approches de prévention des attaques de sécurité script entre sites. Évaluer votre situation spécifique pour déterminer les techniques fonctionne mieux pour vous. Il est important de noter que dans toutes les techniques, vous validez les données provenant d'entrée et pas votre script approuvé. Prévention signifie essentiellement, suivre les bonnes pratiques de codage par exécution des contrôles de tranquillité d'esprit de vos entrées à vos routines.

La liste suivante met en évidence les approches principales pour empêcher les attaques par scripts entre sites :
  • Coder les données de sortie en fonction des paramètres d'entrée.
  • Filtrer les paramètres d'entrée de caractères spéciaux.
  • Résultat du filtre en fonction des paramètres d'entrée des caractères spéciaux.
Lorsque vous filtrez ou codez, 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 qui sont 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ères spécifique. Un jeu de caractères populaire est ISO 8859-1, qui a 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.

Coder la sortie en fonction des paramètres d'entrée des caractères spéciaux

Coder les données reçues en entrée lorsque vous écrivez au format HTML. Cette technique est efficace sur des données n'a pas été validées pour une raison quelconque au cours de l'entrée. À l'aide des techniques telles que URLEncode et HTMLEncode, vous pouvez empêcher un script malveillant de s'exécuter.

Les extraits de code suivants montrent comment utiliser URLEncode et HTMLEncode à partir des pages ASP (Active Server Pages):
<%
      var BaseURL = http://www.mysite.com/search2.asp?searchagain=;
      Response.write("<a href=\"" + BaseUrl +
      Server.URLEncode(Request.QueryString("SearchString")) +
      "\">click-me</a>");
%>
<% Response.Write("Hello visitor <I>" +
      Server.HTMLEncode(Request.Form("UserName")) +
      "</I>");
%>
				
si vous codez le HTML et les URL, vous devrez peut-être définir la page de codes comme vous le feriez si vous étiez pour filtrer les données.

Il est important de noter que l'appel HTMLEncode sur la chaîne qui est sur le point à afficher empêche tout script qu'il contient d'en cours d'exécution et empêche ainsi le problème.

Filtrer les paramètres d'entrée de caractères spéciaux

Filtrage d'entrée fonctionne en supprimant certains ou tous les caractères spéciaux de votre entrée. Caractères spéciaux sont des caractères qui activer le script généré dans un flux HTML. Caractères spéciaux sont les suivants :
< > " ' % ; ) ( & + -
				
note que votre situation individuelle peut-être justifier le filtrage des caractères supplémentaires ou des chaînes au-delà des caractères spéciaux.

Si le filtrage peut être une technique efficace, il existe quelques inconvénients :
  • Le filtrage n'est peut-être pas approprié pour une entrée. Par exemple, dans les scénarios où vous recevez <text>entrée à partir d'un formulaire HTML, vous pouvez plutôt choisir une méthode telle que le codage (voir ci-dessous).
  • Certains caractères filtrées peuvent être entrée requise au script côté serveur.
Le filtre d'exemple suivant, écrit en JavaScript, montre comment supprimer des caractères spéciaux :
function RemoveBad(strTemp) { 
    strTemp = strTemp.replace(/\<|\>|\"|\'|\%|\;|\(|\)|\&|\+|\-/g,""); 
    return strTemp;
} 
				
le code suivant traite l'entrée d'utilisateur avant de les stocker pour une utilisation ultérieure.
<% Session("StoredPreference") = RemoveBad(Request.Cookies("UserColor"));
         var TempStr = RemoveBad(Request.QueryString("UserName"));				

Résultat du filtre en fonction des paramètres d'entrée des caractères spéciaux

Cette technique est similaire à filtrer les entrées sauf que vous filtrez les caractères sont écrites dans le client. Bien que cela peut être une technique efficace, il peut présenter un problème pour les pages Web qui écrire les éléments HTML.

Par exemple, sur une page qui écrit les éléments <TABLE>, une fonction générique qui supprime les caractères spéciaux devrait supprimer la < et > caractères, la balise <TABLE>à l'origine d'une dégradation. Par conséquent, afin que cette technique être utile, seulement filtrez passées dans des données ou des données précédemment entrées par un utilisateur et stockées dans une base de données.

Sources possibles de données malveillantes

Alors que le problème s'applique à n'importe quelle page utilise pour générer dynamiquement le HTML, voici certaines sources possibles données malveillantes pour vous aider à contrôle place aux risques potentiels en matière de sécurité :
  • Chaîne de requête
  • Cookies
  • Données publiées
  • URL et des parties d'URL, telles que PATH_INFO
  • Données récupérées à partir d'utilisateurs et qui est rendue persistante d'une façon ou d'une autre comme dans une base de données

Conclusion

En conclusion, sont : points essentiels à mémoriser concernant le problème de sécurité script intersite
  • Le problème affecte la création de page dynamique en fonction de l'entrée n'a pas été validée.
  • Omission d'un contrôle de la tranquillité d'esprit sur les données d'entrée peut avoir implications en matière de sécurité inattendu. Le problème est évitable bon développement les normes telles que la validation d'entrée.
  • Vous devez évaluer les solutions sur un par site, page et même champ de base et utiliser une technique qui a un sens.

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 :
253117Empêcher Internet Explorer et Outlook Express cross-site problèmes de sécurité de script
253119Comment passer en revue le code ASP pour CSSI vulnérabilité
253120Comment passer en revue Visual InterDev généré le code pour CSSI vulnérabilité
253121Comment passer en revue le code MTS/ASP pour CSSI vulnérabilité

Propriétés

Numéro d'article: 252985 - Dernière mise à jour: mercredi 1 mars 2006 - Version: 3.6
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Active Server Pages 2.0
  • Microsoft Active Server Pages 3.0
  • Microsoft Windows 2000 Server
Mots-clés : 
kbmt kbcodesnippet kbcssi kbhowto kbsecurity KB252985 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: 252985
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.

Envoyer des commentaires

 

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