Il POTENZIAMENTO SECURITY di applicazione WEB: PERICOLI E CONTROMISURE: correzioni e commenti

Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 867600
Questo articolo è stato archiviato. L’articolo, quindi, viene offerto “così come è” e non verrà più aggiornato.
Sommario
In questo articolo contiene commenti, le correzioni e informazioni su errori noti relativi alla Rubrica di Microsoft Patterns & Practices miglioramento della protezione delle applicazioni Web: pericoli e contromisure, ISBN 0-7356-1842-9

Versione di Web del libro viene aggiornata come trovare gli errori. È possibile trovare molti o tutti gli errori seguito già corretto nella versione web del libro su MSDN.

Vengono trattati i seguenti argomenti:
  • Pagina 273, capitolo 10: Building Secure ASP.NET pagine e controlli, sezione: i controlli con associazione a dati, completare la sezione
  • Pagina 441, capitolo 16: Protezione del Server Web, sezione: Disattiva NetBIOS e SMB
Informazioni
pagina 273, capitolo 10: Building Secure ASP.NET pagine e controlli, sezione: i controlli con associazione a dati, completare la sezione
http://msdn2.microsoft.com/en-us/library/aa302426.aspx

Modifica:

Controlli Web con associazione a dati non la codifica output. L'unico controllo che codifica l'output è il controllo TextBox quando la proprietà TextMode è impostata su MultiLine. Se si associa qualsiasi altro controllo ai dati contenente codice XSS dannoso, è possibile che il codice verrà eseguito sul client. Di conseguenza, se si recuperano dati da un database e non è possibile che i dati sono validi (magari perché è un database condiviso con altre applicazioni), codificare i dati prima di passare al client.

To:

Dati i controlli associati i controlli web associabili a componenti di dati mediante una pubblica ereditato ‘ DataSource ’ proprietà. Parlare pochi, si noterà DataGrid, ListBox e DropDownList da utilizzare molto spesso. I dati di non tutti i controlli associati eseguono la codifica quando si visualizzano i dati recuperati da un componente di dati associata; di conseguenza, sarà responsabilità dell'utente per eseguire la codifica su componenti di dati non attendibili per impedire gli attacchi XSS. Ad esempio, un componente di dati non può essere attendibili in uno scenario in cui applicazioni diverse condividono un singolo database. Se un utente malintenzionato ha la capacità di inserire codice XSS dannoso nel database (tramite l'abuso da parte una vulnerabilità in una delle applicazioni, ad esempio) tutte le applicazioni che utilizzano controlli web non codifica associati, diventerà vulnerabile. Evitare solo codifica se è possibile essere certi che l'output dal componente di dati sarà sempre valido.

Esempi di controlli dati associati che non eseguono la codifica sono di DataGrid, DataList, RadioButtonList e CheckBoxList. Eseguire la codifica per i dati di controllo associato variano a seconda ogni controllo specifico. Ad esempio, per un DataGrid il controllo, sono disponibili le opzioni seguenti:
  • Trasformare di tutte le colonne in modelli e utilizzare manualmente HtmlEncode()/UrlEncode() a ogni chiamata a DataBinder.Eval
  • L'override di uno dei relativi metodi di associazione dati, ad esempio OnDatabinding o OnItemDataBound ed eseguire gli elementi di codifica. Nell'esempio seguente viene illustrato come eseguire l'override del metodo di OnItemDataBound di un controllo DataGrid per codificare gli elementi da una utilizzando HtmlEncode() o UrlEncode() quando richiesto:

...[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;      }     }   }...

441 di pagina, il capitolo 16: protezione del Server Web, sezione: Disattiva NetBIOS e SMB
http://msdn2.microsoft.com/en-us/library/aa302432.aspx

viene aggiunta la seguente Nota:

Nota: Test le modifiche prima di implementarle nell'ambiente di produzione. Disattivazione di condivisione o NetBIOS può influire negativamente sulle gestibilità per lo scenario. Ad esempio, IIS utilizza l'API di NetUserChangePassword che dipende da NetBIOS. Se si consente agli utenti di modificare le password tramite IIS, questo non funzionerà più.

0-7356-1842-9 0735618429 web application security

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 867600 - Ultima revisione: 01/11/2015 06:17:48 - Revisione: 1.4

MSPRESS Improving Web Application Security: Threats and Countermeasures, ISBN 0-7356-1842-9

  • kbnosurvey kbarchive kbmt kbdocfix kbdocerr KB867600 KbMtit
Feedback