2010-12-29 28 views
7

Bu biraz öznel bir soru, ancak bunu yapmak için artıları/eksileri duymak isterim. Quick and Dirty Feed Parser adlı açık kaynaklı bir projeyi yönetiyorum ve projenin amacı, .NET'teki RSS ve Atom beslemelerini tüketmek için mümkün olduğunca kusursuz hale getirmektir.UnsafeHeaderParsing öğesini varsayılan olarak etkinleştirmek kabul edilebilir bir uygulamadır mı?

Projenin geliştirilmesinde oldukça erken bir şekilde karşılaştığım sorunlardan biri, (Hacker News RSS feed) hatalı test edilmiş HTTP üstbilgileri ve .NET'teki HttpWebRequest sınıfı olarak kullandığım bazı beslemelerin kullanmasıydı. Bir GET isteğinde bu başlıklardan birini aldığınızda 1.1 ve üstü "güvenli olmayan başlık" istisnasını hemen atar.

This change was added in order to put a stop to split-response attacks that were raising security issues at the time .NET 1.1 was released.

Sorunum bu nedenle - "useUnsafeHeader" yapılandırma seçeneğini programsal olarak etkinleştirebilirim, ancak bu uygulamanın bağlamında TÜM HttpWebRequest'leri arasında çalışır. QD Feed Ayrıştırıcısından geçerli feed'leri kullanamadığından şikâyet eden kullanıcılara sahibim ve bu başlık sorununun nedeni budur.

Şu anda kitaplığımın, bunu kullanan geliştiricilerin kendileri için sorun olmadığını bilmelerine rağmen, güvensiz başlığın kendileri tarafından ayrıştırılmasını sağlamaları gerektiği için, bunları kullanmak için bir destek ek yükü oluşturacak şekilde kurulmuş bir şekilde oluşturdum. .

Hızlı ve Kirli Besleme Ayrıştırıcısını varsayılan olarak güvenli olmayan başlık ayrıştırmasını etkinleştirebilir ve güvenlikle ilgili kullanıcıları devre dışı bırakmaya zorlayabilirim; ancak güvenlik açısından daha iyi bir saldırıya sahip olmayan kullanıcıları açmak istemiyorum. . Burada en iyi seçenek nedir?

+0

Sadece proje siteyi ziyaret etti ve siz (o besbelli değil) başka bir yerde "Gelişmiş Kullanımı" bu sorunu belgeledi olsa ilk sayfasında hayır "SSS" sayfa vardır fark ettim. Belgelerinizin öngörülebilir ve kolay bulunmasını sağlayın ayrıca sizi destek yükünden de koruyabilirsiniz. –

cevap

6

"Güvensiz", burada biraz aşırı; Bu ayarı farklı şekilde adlandırırdım. Sorun, kötü niyetli sunucular HTTP RFC'sini tam olarak takip etmeyen başlıklar yaydığında ortaya çıkar. Örneğin RFC, CR karakterlerinin bir LF karakteri tarafından takip edilmesi gerektiğini söylüyor, bu nedenle LF yoksa "güvensiz" başlıklara izin vermedikçe bir uygulama elde edeceksiniz. Pratikte, birçok HTTP istemcisi, mümkün olduğunca çok sunucuyla konuşmak için bu küçük ihlalleri göz ardı eder. Bu yüzden tarayıcınız veya RSS okuyucunuz asla "güvensiz" başlıklardan şikayet etmemektedir. Üstbilgiler sahte olsa bile, .NET istemci kitaplıkları yeterince güçlüdür, örneğin, bir saldırganın satır beslemesini ihmal etmesi durumunda sunucunuzu çökertmeyeceksiniz. :-) Bu yüzden burada gerçekten büyük bir güvenlik sorunu yoktur, (örneğin), doğrudan HTML'nize (örneğin bir saldırganın HTML'nize bir XSS saldırısı enjekte etmesine izin verebilir) HTTP üstbilgi adları ile aptalca şeyler yapmazsanız.

Bu nedenle, HTTP üstbilgileri, uygulamanızın (sorgu dizeleri, POST verileri, vb.) Olduğu gibi, kullanıcı tarafından gönderilen diğer tüm veriler kadar güvenilir olmadıkları sürece, bu durumda Tamam olmalısınız. uygulamanızda "güvenli olmayan" başlıklara izin verme.

İlgili konular