MENACES et contre-MESURES de sécurité d'application WEB AMÉLIORER:: correction et commentaires

Traductions disponibles Traductions disponibles
Numéro d'article: 867600 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Résumé

Cet article contient des commentaires, corrections et informations sur les erreurs connues relatives à la loi modèles & pratiques Microsoft améliorer la sécurité des applications Web : menaces et contre-mesures, ISBN 0-7356-1842-9

Version Web du livre est mise à jour qu'il trouve les erreurs. Vous pouvez trouver plupart ou tous les erreurs ci-dessous déjà résolu dans la version web de la loi sur MSDN.

Les rubriques suivantes sont traitées :
  • Page 273, chapitre 10 : Building Secure ASP.NET pages et contrôles, section : contrôles lié aux données, fin de section
  • Page 441, chapitre 16 : sécuriser votre serveur Web, la section : désactiver NetBIOS et SMB

Plus d'informations

page 273, chapitre 10 : Building Secure ASP.NET pages et contrôles, la section : contrôles lié aux données, fin de section
http://msdn2.microsoft.com/en-us/library/aa302426.aspx

modifier :

Contrôles liés Web aux données ne code pas sortie. Le seul contrôle qui code de sortie est le contrôle de zone de texte lorsque sa propriété TextMode est définie à MultiLine. Si vous liez un autre contrôle à des données ayant un code malveillant XSS, le code est exécuté sur le client. Par conséquent, si vous récupérez des données à partir d'une base de données et vous ne peut pas être certain que les données sont valides (peut-être car il s'agit d'une base de données qui est partagée avec d'autres applications), coder les données avant que vous lui transmettre au client.

To:

Données contrôles dépendants sont des contrôles web qui sont pouvant être liés aux composants de données à un public héritées ? source de données ? propriété. Indiquez quelques, vous trouverez DataGrid, zone de liste et DropDownList à utiliser très souvent. Pas toutes les données effectuer des contrôles dépendants codage lorsque l'affichage des données extraites à partir d'un composant de données liée ; par conséquent, il sera votre responsabilité d'effectuer le codage de composants de données non fiables afin d'empêcher les attaques XSS. Par exemple, un composant de données ne peut pas être approuvé dans un scénario où différentes applications partagent une base de données unique. Si un utilisateur malveillant a la possibilité insérer un code malveillant XSS dans la base de données (à abusing une vulnérabilité dans une des applications, par exemple) toutes les applications utilisant des contrôles web non codage liés à celui-ci, devient vulnérable. Éviter seulement codage si vous pouvez être certain que la sortie à partir du composant de données sera toujours valide.

Exemples de contrôles liée aux données qui n'exécutent pas de codage sont grille de données, de DataList, de RadioButtonList et de CheckBoxList. Exécution de codage d'une données contrôle peut varier selon chaque contrôle spécifique. Par exemple, pour un contrôle DataGrid contrôle, vous disposez des options suivantes :
  • Transformer toutes les colonnes dans des modèles, manuellement utiliser HtmlEncode()/UrlEncode() sur chaque appel à DataBinder.Eval
  • Remplacer une des ses méthodes DataBinding, tels que OnDatabinding ou OnItemDataBound et effectuer le codage de ses éléments. L'exemple suivant montre comment remplacer la méthode OnItemDataBound d'un contrôle DataGrid afin de coder ses éléments par soit à l'aide HtmlEncode() ou UrlEncode() lorsque cela est nécessaire :

...
[DefaultProperty("Text"),
  ToolboxData("<{0}:DataGrid runat=server></{0}:DataGrid>")]
 
public class DataGrid : System.Web.UI.WebControls.DataGrid
{
    /// <summary>
    /// The ItemDataBound event is raised after an item is data bound to the DataGrid
    /// control. This event provides you with the last opportunity to access the data
    /// item before it is displayed on the client. After this event is raised, the data
    /// item is nulled out and no longer available. - .NET Framework Class Library
    /// </summary>
    /// <param name="e"></param>
    protected override void OnItemDataBound(DataGridItemEventArgs e)
    {
      base.OnItemDataBound (e);
 
      switch (e.Item.ItemType)
      {
        case ListItemType.Item:
        case ListItemType.AlternatingItem:
        case ListItemType.EditItem:
        case ListItemType.SelectedItem:
        case ListItemType.Footer:
        case ListItemType.Header:
        case ListItemType.Pager:  
          // even though not all of these ListItemTypes are data bound,
          // perform HtmlEncode or UrlEncode on each control. If there are
          // no controls, we perform HtmlEncode on any available text.
          // Also, don't let &nbsp;'s be encoded.
          TableCellCollection cCells = e.Item.Cells;
          foreach (TableCell tc in cCells)
          {
            if (tc.Controls.Count > 0)
            {
              foreach (Control ctrl in tc.Controls)
              {
                
                // don't perform HtmlEncode on URL's
                if (ctrl is HyperLink)
                {
                  HyperLink hLnk = (HyperLink)ctrl;
 
                  if (hLnk.Text.Length > 0)
                    hLnk.Text = HttpUtility.HtmlEncode(hLnk.Text);
                  if (hLnk.NavigateUrl.Length > 0)
                    hLnk.NavigateUrl = HttpUtility.UrlEncode(hLnk.NavigateUrl);
                }
                else if (ctrl is LinkButton)
                {
                  LinkButton lButton = (LinkButton)ctrl;
 
                  if (lButton.Text.Length > 0)
                    lButton.Text = HttpUtility.HtmlEncode(lButton.Text);
                }
                else if (ctrl is Button)
                {
                  Button cButton = (Button)ctrl;
 
                  if (cButton.Text.Length > 0)
                    cButton.Text = HttpUtility.HtmlEncode(cButton.Text);
                }
              }
            } 
            else 
            {              
              // there are no controls in the table cell
              // HTMLEncode any available text
              if (tc.Text.Length > 0) 
              {
                if ("&nbsp;" != tc.Text) 
                  tc.Text = HttpUtility.HtmlEncode(tc.Text);
              }
            }
          }
          break;
        
        default:
          break;
      }
     }
   }
...

page 441, chapitre 16 : sécuriser votre serveur Web, la section : désactiver NetBIOS et SMB
http://msdn2.microsoft.com/en-us/library/aa302432.aspx

note suivante est ajoutée :

Remarque : tester vos modifications avant de les implémenter en production. Partage de désactivation ou NetBIOS peut influer négatif sur la simplicité de gestion pour votre scénario. Par exemple, IIS utilise l'API NetUserChangePassword qui dépend de NetBIOS. Si vous autorisez les utilisateurs à modifier mot de passe dans IIS, cela ne fonctionnera plus.

Propriétés

Numéro d'article: 867600 - Dernière mise à jour: mardi 8 mai 2007 - Version: 1.4
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • MSPRESS Improving Web Application Security: Threats and Countermeasures, ISBN 0-7356-1842-9
Mots-clés : 
kbmt kbdocfix kbdocerr KB867600 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: 867600
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