ZLEPŠENÍ WEB APPLICATION SECURITY: HROZBAMI AND PROTIOPATŘENÍ: opravy a komentáře

Překlady článku Překlady článku
ID článku: 867600 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Souhrn

Tento článek obsahuje komentáře, opravy a informace o známých chybách související postupy Microsoft vzorky & knihuZlepšení zabezpečení webových aplikací: Threats and protiopatřeními, ISBN 0-7356-1842-9

Web verze knihy je aktualizováno jako jsme najít chyby. Můžete najít mnoho nebo všechny chyby pod již opraven ve webové verzi knihy na MSDN.

Následující témata:
  • Stránka 273, Kapitola 10: Secure stránky ASP.NET budovy a prvky, oddíl: Controls související data dokončení oddíl
  • 441 Stránky, Kapitola 16: Zabezpečení serveru WWW, oddíl: Zakázat NetBIOS a SMB

Další informace

273 Stránky, Kapitola 10: Secure stránky ASP.NET budovy a prvky, oddíl: Controls související data dokončení oddíl
http://msdn2.microsoft.com/en-us/library/aa302426.aspx

Změna:

Data vázané ovládací prvky webového není kódování výstupu. Pouze ovládací prvek, který kóduje výstup je ovládací prvek TextBox při jeho vlastnost TextMode nastavena víceřádkové. Pokud jiný ovládací prvek vázat na data, která má škodlivý kód XSS, kód provedeny na klienta. Výsledkem je, pokud načtení dat z databáze a nemůže být jistí, že data je platný (případně protože je databáze sdílena s jinými aplikacemi), kódovat data před předat zpět klientovi.

To:

Data vázané ovládací prvky jsou webové ovládací prvky, které jsou nimiž lze vytvořit vazbu součásti dat prostřednictvím veřejné zděděné ‘ DataSource ’ vlastnost. O několik, bude po najít DataGrid, seznam a DropDownList velmi často používány. Ne všechny ovládací prvky vázané dat provést kódování při zobrazení dat načtených z komponenty vázaná data; tedy bude odpovědnosti provést kódování na součásti nedůvěryhodný dat zabránit útokům XSS. Například součást dat nemůže být důvěryhodné ve scénáři, kde různých aplikací sdílení jedné databáze. Pokud útočník má schopnost vložit škodlivý kód XSS do databáze (podle abusing chybu zabezpečení v aplikací, pro instanci) všech aplikací pomocí jiných kódování ovládací prvky webových vázané, bude zapnout ohrožen. Pouze vyhnout kódování Pokud můžete být jisti, že výstup z komponenty dat bude vždy platná.

Příklady ovládacích prvků data vázané neprovádějte kódování jsou DataGrid, DataList, RadioButtonList a CheckBoxList. Provádění kódování pro datové vázaný ovládací prvek může lišit v závislosti na každý konkrétní ovládací prvek. Například pro DataGrid ovládacího prvku, máte následující možnosti:
  • Zapnutí všech sloupců do šablon a ručně použijte HtmlEncode()/UrlEncode() na každé volání DataBinder.Eval
  • Jeden z jeho metody DataBinding například OnDatabinding nebo OnItemDataBound přepsat a provést kódování jeho položky. Následující příklad ukazuje, jak přepsat metody OnItemDataBound ovládací prvek DataGrid ke kódování jeho položek podle buď pomocí HtmlEncode() nebo při požadováno UrlEncode():

...
[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 Stránky, Kapitola 16: zabezpečení serveru WWW oddíl: Zakázat NetBIOS a SMB
http://msdn2.microsoft.com/en-us/library/aa302432.aspx

Přidána následující Poznámka:

Poznámka: Změny test před implementací ve výrobě. Zákaz sdílení nebo NetBIOS může negativně ovlivnit možnosti správy pro váš scénář. Například služba IIS používá API NetUserChangePassword který závisí na NetBIOS. Pokud povolíte uživatelům měnit hesla prostřednictvím služby IIS to nebude již fungovat.

Vlastnosti

ID článku: 867600 - Poslední aktualizace: 8. května 2007 - Revize: 1.4
Informace v tomto článku jsou určeny pro produkt:
  • MSPRESS Improving Web Application Security: Threats and Countermeasures, ISBN 0-7356-1842-9
Klíčová slova: 
kbmt kbdocfix kbdocerr KB867600 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:867600

Dejte nám zpětnou vazbu

 

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