husonet | Tarih: 21.05.2017
ASP.NET Web.config dosyasındaki en kötü 5 hata
ASP.NET Web.config dosyasındaki en kötü 5 hata ve çözümü
Merhabalar Arkadaşlar, (Not:Lütfen öneri ve sorularınızı yorum olarak atınız. Teşekkürler şimdiden)
Custom Errors
CustomErrors etiketi system.web tagları arasında kullanılır. Bu etiket sistem hatayla karşılaştığında hata mesajı vermek yada vermemek için kullanılır. Burada yapılan kritik hata aşağıdaki şekildedir.
<System.web>
<CustomErrors mode= "off">
</System.web>
CustomError'un mod özelliği off yerine RemoteOnly olmalıdır.Güvenli kullanışı aşağıdaki şekildedir.
<System.web>
<CustomErrors mode = "RemoteOnly">
</System.web>
Ya da aynı yapılandırma hata ile karşılaşıldığında bir özel hazırlanmış sayfaya yölendirilmesi isteniyorsa DefaultRedirect kullanılabilir. Örneğin hata.aspx sayfası hazırladık. Ve 403, 404, 500 http hata kodları gerçekleştiğinde bu sayfaya yönlendirilmesini istiyoruz.Bunu aşağıdaki şekilde ayarlayabiliriz.
<customErrors mode="On">
<error statusCode="403" redirect="~/hata.aspx"/>
<error statusCode="404" redirect="~/hata.aspx"/>
<error statusCode="500" redirect="~/hata.aspx"/>
</customErrors>
Aynı zamanda her durumda yölendirilmenin sağlanması için <system.webserver> etiketi arasına aşağıdaki satırları eklemeliyiz.
<httpErrors errorMode="Custom">
<remove statusCode="403" subStatusCode="-1"/>
<remove statusCode="404" subStatusCode="-1"/>
<remove statusCode="500" subStatusCode="-1"/>
<error statusCode="403" path="/hata.aspx" responseMode="Redirect"/>
<error statusCode="404" path="/hata.aspx" responseMode="Redirect"/>
<error statusCode="500" path="/hata.aspx" responseMode="Redirect"/>
</httpErrors>
Tracing
Uygulamada bulunan tüm sayfaları ayrı ayrı izlemek yerine uygulamanın tek yerinde izlememizi sağlayan etikettir. Uygulama yapım aşamasında sayfaları izleyip bize trace viewer de tüm ayrıntıları sağlar. Bunun için hatalı kullanım aşağıdaki şekildedir.
<system.web>
<trace enabled=”true” localOnly=”false“></system.web>
Bunun için uygulamayı izlemelerini takip etmek adına güvenli kullanım aşağıdaki şekildedir.
<system.web>
<trace enabled=”false” localOnly=”true“>
</system.web>
Debugging
ASP.NET web tabanlı uygulamasını geliştirme aşamasında debug özelliği true olarak ayarlanmaktadır. Böylece hata ayıklamayı aktif etmiş oluruz. Buradaki yapılan krtik hata uygulama ürün haline getirildiğinde hata ayıklama modunu açık olarak unutmaktır. Güvenli olan, uygulama ürün halinde geldiğinde bu özelliği false olarak setlemektir. Aşağıda test ve geliştirme aşamalarında setlenecek debug özelliği örnek satırını paylaşacağımm.
<system.web>
<compilation debug=”true“>
</system.web>
Bir de güvenli debug setlemesini aşağıda belirteceğim.
<system.web>
<compilation debug=”false“>
</system.web>
HttpOnly
HtppOnly, microsoft'un İnternet Explorer 6.0 sürümünde sunduğu bir özelliktir.
Bu özellik ile kötü amaçlı bir saldırganın siteye javascript ekleyip sitede xss zaafiyetine sebep olacak hasarlar vermesini engellemektedir. Bunu site içinde ayarlanaabileceği gibi configurasyon yani web.config içinde de ayarlamak mümkündür. Aşağıdaki kullanım siteyi gelebiecek herhangi bir saldırısına açık hale getiren konfigusaryon ayarlarıdır.
<system.web>
<httpCookies httpOnlyCookies=”false“>
</system.web>
Bu kullanım istenmeyen bir kullanımdır. Güvenli kullanım aşağıdaki gibidir.
<system.web>
<httpCookies httpOnlyCookies=”true“>
</system.web>
sessionState
SessionState, web uygulamalarında oturum durumu konfigurasyonlarıdır.Bu konfigurasyonda yapılan güvensiz olarak belirtebileceğimiz ayar Cookieless özelliğinin kullanımıdır. Cookieless, kullanılan oturum bilgisi (SessionID)'nin url'de mi yoksa cookielerde mi göülü olarak tutulacağını ayarladığımız özelliktir. Bunun için güvensiz kullanım aşağıdaki şekildedir.
<system.web>
<sessionState cookieless=”UseUri“>
</system.web>
UseUri kullanımı url'de gömülü olacağını bildirdiğimiz ayardır. Bunun yerine aşağıdaki kullanım olarak sunucu bazlı olarak cookie'lerde gömülü olarak saklanması daha güvenli olacaktır. Aşağıdaki bu güvenli kullanımı paylaşacağım.
<system.web>
<sessionState cookieless=”UseCookies“>
</system.web>
Güvenli uygulamalar!