WEB UYGULAMA SECURITY GELIŞTIR: TEHDITLERE VE COUNTERMEASURES: düzeltmeler ve açıklamalar

ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.

Makalenin İngilizcesi aşağıdaki gibidir:867600
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
Özet
Bu makale açıklamaları ve düzeltmeleri Microsoft Patterns & uygulamalar defterine ilgili bilinen hatalar hakkında bilgi içerir.Web uygulama güvenliği artırma: tehditler ve önlemler, isbn 0-7356-1842-9

Hataları buluyoruz defterinin web sürümü güncelleştirilir. Zaten MSDN rehberi web sürümünde düzeltildi çoğunu veya tamamını aşağıdaki hata bulabilirsiniz.

Aşağıdaki konuları kapsar:
  • Sayfa 273, Bölüm 10: Güvenli ASP.NET sayfaları oluşturma ve denetimleri, bölüm: veri bağlı denetimleri, bölümü tamamlayın.
  • Sayfa 441, Bölüm 16: Web sunucu güvenliği, bölüm: Netbıos ve SMB devre dışı bırak
Daha fazla bilgi
Sayfa 273, Bölüm 10: Güvenli ASP.NET sayfaları oluşturma ve denetimleri, bölüm: veri bağlı denetimleri, bölümü tamamlama
http://msdn2.microsoft.com/en-us/library/aa302426.aspx

Değiştir:

Web veriyle sınırlı denetimler çıkış kodlamak. Için çok satırlı TextMode özelliği ayarlandığında çıkış kodlar yalnızca denetimi TextBox denetimine ' dir. Kod, kötü amaçlı XSS koduna sahip olan tüm veri için diğer bir denetim bağlarsanız, istemcide yürütülür. Sonuç olarak, bir veritabanından veri almak ve emin olamaz verileri geçerlidir (belki de, diğer uygulamalarla paylaşılıyor bir veritabanı olduğundan), istemciye geçirmeden önce verilerin kodlamak.

To:

Bağlanabilir veri bileşenleri ile devralınan genel olan web denetimleri ilişkili denetimleri olan veri ‘ DataSource ’ özelliği. Birkaç bahsetmek için <a0></a0>, çok sık kullanılan DataGrid, ListBox ve DropDownList bulabilirsiniz. Ilişkili denetimler, verileri görüntüleme, kodlama gerçekleştirmek tüm verileri bir ilişkili veriler bileşeninden alınan; bu nedenle, XSS saldırılarını önlemek için güvenilir olmayan veri bileşenleri kodlama gerçekleştirmek için sizin sorumluluğunuzdadır. Örneğin, bir veri bileşeni farklı uygulamalar, tek bir veritabanı nerede paylaşmak senaryosunda güvenilmelidir edemiyor. Bir saldırganın (uygulamalar, bir güvenlik açığını örneğin abusing tarafından), kötü amaçlı XSS kod veritabanına ekleme olanağı varsa, bağlı olmayan kodlama web denetimleri kullanan tüm uygulamalar savunmasız açın. Yalnızca veri bileşeni çıktılarını her zaman geçerli olacağını emin olabilir, kodlama kaçının.

DataGrid DataList, RadioButtonList ve CheckBoxList kodlama gerçekleştirmeyin ilişkili veri denetimleri örnektir. Ilişkili denetim için bir veri kodlama işlemi her belirli bir denetime bağlı olarak değişebilir. Örneğin, bir DataGrid için Denetim, aşağıdaki seçeneklere sahipsiniz:
  • Tüm sütunların şablonlar ve el ile her çağrısında DataBinder.Eval HtmlEncode()/UrlEncode() kullanın...
  • OnDatabinding veya OnItemDataBound DataBinding yöntemlerinden biri geçersiz kılmak ve kendi maddelerde kodlaması gerçekleştirme. Aşağıdaki örnek, öğeleri tarafından kodlamak için bir <a0>DataGrid</a0> denetiminin OnItemDataBound yöntemi geçersiz kılmak verilmektedir HtmlEncode() ya da gerektiğinde UrlEncode() kullanarak:

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

Sayfa 441, Bölüm 16: Web sunucu güvenliği, bölüm: Netbıos ve SMB devre dışı
http://msdn2.microsoft.com/en-us/library/aa302432.aspx

Aşağıdaki Not eklenir:

Not: üretim uygulamadan önce bu değişiklikleri sınama. Engelleyici bir paylaşım veya Netbıos yönetilebilirlik senaryonuza olumsuz yönde etkileyebilir. Örneğin, IIS üzerinde Netbıos bağımlı NetUserChangePassword APı'SINI kullanır. Kullanıcıların parolalarını IIS aracılığıyla izin vermek, artık çalışmayacak.

0-7356-1842-9 0735618429 web uygulama güvenliği

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 867600 - Son İnceleme: 01/11/2015 06:17:54 - Düzeltme: 1.4

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

  • kbnosurvey kbarchive kbmt kbdocfix kbdocerr KB867600 KbMttr
Geri bildirim