Standart ASP.net uygulamalarında ASP.net, bazılarının denediği durumlarda tehlikeli giriş hatalarını algılayan validateRequest ile XSS saldırılarına karşı bir miktar koruma sağladı. Bu işlevsellik MVC'den çıkarılmış gibi görünüyor herhangi bir fikir neden?Doğrulama isteği neden ASP.net MVC'den çıkarıldı?
cevap
Bu, aşılması zor bir çizgi. Web uygulamanız sadece bir RESTful web kaynağı mıdır? Ya da daha fazlasını yapmaya çalışıyor mu? Bildiğiniz bir sonraki şey 100 adet giriş alanı var: __VIEWSTATE, __EVENTTARGET, __EVENTARGUMENT, vb.
Bildiğiniz gibi, yine de MVC'de XSS saldırılarını engelleyebilirsiniz. Birkaç örnek görmek için sadece google it. Fakat bunun nedeni, temel olarak MVC'nin farklı bir 'temiz' web uygulaması türü olmasıdır.
DÜZENLEME: Yukarıda ne söylediğimin açık olup olmadığını bilmiyorum. Ancak fikir, MVC'nin ne olduğundan daha fazla olmayacağıdır (ASP.NET'in yaptığı gibi). İkisinin de güçlü noktaları ve nedenleri var.
Umarım, XSS'den kaçınmak için ValidateRequest'den daha sağlam bir şeyiniz vardır.
Bir yaklaşımı basitçe reddetmek yerine alternatif önermek daha yararlıdır. – RedFilter
ValidateRequest gerçekten çok mu kötü? Kullanıcı tarafından girilen herhangi bir html'yi kodladığımı, ancak hangi yaklaşımı kullandığınızı merak ettiğimi garanti ediyorum. – alexmac
"Büyü" kötüdür. Uygulamanızın güvenlik açıklarını ve bunların nasıl çeliştiğini anlamadıysanız, uygulamanızı güvenli hale getirmek için diğer insanlara güvenmeniz tehlikelidir. Anlamanız gereken bir delik, duvarlara değil, eğitilmeli. – Will
ValidateRequest çözümünü bir kesmek olarak buluyorum. Benim görüşüme göre 'XSS'yi kapatmak' bir İş Kuralıdır; Bu nedenle Modelin durumu ele almasına izin verin.
REST ilkelerini daha iyi takip etme arzusuyla ilgili açıklamaları gerçekten çok seviyorum. 100 gizli alana gelince, bana birkaç yıl önce verdiğim bir ASP çözümünü hatırlatıyor; Meta verileri taşımak için gizli alanların çoğalmasını kullandım. Güzel değil.
Bu sorunun eski olduğunu biliyorum ama yine de cevaplayabileceğimi düşündüm.
Eylemlere ekleyebileceğiniz bir ValidateInput eylem filtresi özniteliği vardır.
[ValidateInput(true)]
public ActionResult Foo()
{
}
Ayrıca
public class MyModel
{
public Guid ID { get; set; }
[AllowHtml]
public string SomeStringValue { get; set; }
}
İzin verilen AllowHtmlAttribute eklendi. –
Teşekkür Timothy, aklımda belirli bir Web sitesi yok modeli özelliklerine AllowHtml özelliğini kullanabilirsiniz. Talebin onaylanmasının, talep edilene kadar istek üzerine müdahale edeceği ve sadece potansiyel olarak tehlikeli olduğu hallerde, hala beklemede kalmasını sağladığını düşünüyorum. Xss ile hangi yaklaşımı alıyorsunuz? – alexmac