Welcome, Guest
Username: Password: Remember me
  • Page:
  • 1

TOPIC:

Özel Yapım Hata Sayfaları (Custom Error Pages) 9 years 10 months ago #157

  • quantum50
  • quantum50's Avatar Topic Author
  • Offline
  • Elite Member
  • Elite Member
  • Posts: 480
  • Karma: 4
  • Thank you received: 6
Geliştirdiğimiz web uygulamalarında, gerek istemciden gerekse sunucudan kaynaklanabilecek hata durumlarında, hata bilgisini istemciye verecek sayfaları uygulama sunucuları sağlar. Hata sayfaları kullanılan platform hakkında detaylı bilgi sağlayarak sistemlerin barındırdığı zafiyetlerini tespitini kolaylaştırır. Özellikle otomatize araçlar ile popüler açıklıkların ortaya çıkarılmasına imkan verir.

HTTP Durum Kodları (HTTP Status Code)
Sunucudan istemciye her sayfa gönderilişinde içinde bir de durum kodu (HTTP response status code) bilgisi verilir. Durum kodu, istemcinin yaptığı isteğe, sunucunun verdiği cevabı niteleyen bir sayıdır. Beş kategoride sınıflandırılan bu kodların en yaygın kullanılanları aşağıdaki gibidir.

Bilgi (Informational)

İstek geldi işlem sürüyor anlamına gelir.

Başarı (Success)

İstek geldi, ne olduğu anlaşıldı, kabul edildi ve işlem başarıyla yapıldı bilgisidir.

200 Tamam (OK): Başarılı HTTP isteklerine verilen standart cevaptır.

Yönlendirme (Redirection)

İsteğin tamamlanabilmesi için ek bir adıma ihtiyaç olduğu anlamına gelir.

301 Sayfa Başka Yerde (Moved Permanently): Bu sayfaya gelen bütün istekler başka bir sayfaya yönlendirilir.

302 Sayfa Bulundu (Moved Temporarily - Found): Bu sayfaya gelen bütün istekler başka bir sayfaya yönlendirilir. POST türü gelen isteğin, yönlendirmesi ikinci bir GET türü istekle yapılır. Daha çok kullanıcı girişi yapılan sayfalarda verilir.

İstemci Hatası (Client Error)

İstemcinin sunucuya istekte bulunurken yaptığı bir hatadan kaynaklanan mesaj türleridir.

400 Hatalı İstek (Bad Request): Sözdizimi hatası.

401 Yetkilendirme Başarısız (Unauthorized): 403 mesajına benzer, farkı kullanıcının kimlik denetiminde bir sorun yaşandığı durumlarda verilmesidir.

403 Yasak İstek (Forbidden): İstek uygundur fakat kimlik denetimi yapsanız bile sunucu size bu sayfayı vermeyecektir.

404 Sayfa Bulunamadı (Not Found): Sayfa bulunamadı. En çok karşılaşılan hata mesajı türüdür.

Sunucu Hatası (Server Error)

Sunucuya başarılı bir istekte bulunuldu ama uygulamadaki her hangi bir yerde sorunla karşılaşıldı anlamına gelen hata mesajlarıdır.

500 Uygulama Hatası (Internal Server Error): Detay vermeyen genel bir hata mesajıdır. Çoğunlukla yazılımdan kaynaklanan hatalarda verilir.

503 Sunucuya Ulaşılamıyor (Service Unavailable): Sunucuda aşırı yük var ya da başka bir nedenden dolayı sunucunun kapatıldığı durumlarda verilir.

Bu konuyu ilgilendiren mesajlar, 4xx ve 5xx kodlu olan hata mesajlarıdır. Sunucudan ya da istemciden kaynaklanan hata durumlarında, eğer özel bir ayar yapılmadıysa, sunucuda tanımlı olan, hata sayfaları istemciye gösterilecektir.

Tomcat Web Container için Özel Yapım Hata Sayfası
Sunucuların sağladığı hata mesajları genelde sistemle ilgili bilgiler içerir. En azından sunucu ad ve sürüm bilgisi verilmektedir. Sunucu bilgisinin erişilebilir olması, bilginin açığa çıkarılması (Information Disclosure) zafiyeti olarak değerlendirilebilir. Bu bilgi kötü niyetli kullanıcıların saldırı yüzeyini daraltacaktır. Sunucuya özel açıklıklar üzerinde yoğunlaşmaya imkan verdiği gibi, eğer önemli bir açıklık mevcutsa basit gibi görünen bir bilgi ifşasıyla sistemin güvenliği tehlikeye girecektir. Güvenli yazılım geliştirme metodolojisinde, bu bilgilerin sızdırılmayacak şekilde yapılandırılması hata yönetimi kapsamında ele alınır.


resim-1.jpg
Resim 1 - İstemci sunucuda olmayan bir sayfayı istediğinde, HTTP 404 durum kodlu, sunucu ad ve versiyon bilgisini içeren, örnek bir sunucu tanımlı hata sayfası.

Aslında beklenmedik her durumda uygulama sunucusu devreye girer ve kullanıcıya ilgili mesajını verir. Bu noktada yapılabilecek iş, sunucuya kendi ön tanımlı hata sayfalarını kullandırtmayıp bunun yerine kullanıcı tanımlı oluşturulan özel yapım hata sayfalarının kullandırılmasıdır.

Kullanıcı tanımlı hata mesajı kullanımının sağlanması iki farklı şekilde yapılabilir. İlk akla gelen, sunucuda bulunan hata sayfalarının içeriğini değiştirmek olacaktır. Fakat burada daha esnek bir çözüm olarak, sunucuya, özel tanımlı hata sayfalarının kullandırılması anlatılacaktır.

Örnek projenin yapısı aşağıdaki gibidir. Hata sayfalarının sunucu ve istemci isimli iki farklı dizin altında tutulduğu görülmektedir.


resim-2.jpg
Resim 2 - Java tabanlı örnek "özel yapım hata sayfaları" projesi dizin yapısı.

Gelelim ilgili durum kodu üretildiğinde (http response status code) bu tanımladığımız sayfaların sunucuya kullandırılmasını söylemeye.


resim-3.jpg
Resim 3 - Olmayan bir sayfa için sunucuya yapılan istek ve sonucunda oluşan 404 HTTP durum kodlu cevap. (Resim 1 de yapılan istek)

resim-4.jpg
Resim 4 - Sunucunun (Tomcat), özel yapım hata sayfasını kullanmasını sağlamak için konfigürasyon dosyasında (web.xml) yapılacak tanım.

404 durum kodu üretildiğinde /hataSayfasi/istemci/sayfa_bulunamadi.jsp sayfası görüntülenecektir. Burada sadece iki tane durum için örnek yapılmıştır, istenilen diğer durum kodları aynı şekilde tanımlanabilir.


resim-5.jpg
Resim 5 - Tanımlama yapıldıktan sonra, Resim 1 de yapılan aynı isteğe verilecek cevap sayfası (sunucu ad ve versiyon bilgisi yok)

Burada uygulama sunucusu tabanlı bir çözüm uyguladık. Java dünyasında bir çok uygulama sunucusu olduğu için diğer sunucularda aynı ya da ufak sözdizim değişlikleriyle özel yapım hata sayfaları oluşturulabilir. Microsoft tarafında ise tek sunucu olduğu için platform tabanlı bir çözüm olarak adlandırmak daha doğru olacaktır.

ASP .NET için Özel Yapım Hata Sayfası
web.config konfigürasyon dosyası içerisine şu kod parçacığı eklenir.

resim-6.jpg
Sunucudan 404 durum kodu üretildiğinde /hataSayfasi/istemci/sayfa_bulunamadi.aspx sayfası görüntülenecektir. Diğer durumlar ise genel bir şekilde ele alınmışır, /hataSayfasi/genel.aspx sayfası görüntülenecektir.

Please Log in or Create an account to join the conversation.

  • Page:
  • 1
Time to create page: 0.520 seconds

NDK Hoş Geldin