Güvenlik, Hata, Uyarı ve Günlük Kaydını Yönetme

Bu bölümde aşağıdaki konular açıklanmıştır:

Güvenlik

Bir veri kaynağı, aşağıda belirtilen iki erişim modundan birinde çalışabilir:

  • Varsayılan olan kısıtlanmış erişim modunda bir veri kaynağı, yalnızca veri kaynağının bulunduğu alan adından gelen istekleri yerine getirir. Kısıtlı mod, siteler arası istek sahtekarlığı (XSRF) saldırılarını önler ve sınırsız erişim modundan daha güvenlidir. Veri kaynağı kitaplığı, sunucu tarafındaki durumu veya verileri değiştirmek için değil, yalnızca veri döndürmek için bir arayüz sağladığından, yalnızca veri çalmaya çalışan XSRF saldırıları yapılabilir. Veri kaynağınızı veri çalma girişimlerine karşı güvenli hale getirmek için çerez tabanlı kimlik doğrulamayla birlikte kısıtlanmış modun kullanılması gerekir. Kullanıcıların kimliklerini doğrulama yönteminiz, ortamınıza ve uygulamanıza bağlıdır.

  • Sınırsız erişim modunda bir veri kaynağı, kaynağından bağımsız olarak tüm istekleri sunar. Kısıtlanmamış modda çalışan bir veri kaynağı, çerez tabanlı kimlik doğrulama ile korunabilir, ancak veri kaynağının XSRF saldırılarına karşı savunmasız olacağını unutmayın. Veri kaynağının alanının dışındaki web sayfalarındaki görselleştirmelerin veri kaynağına erişmesi gerekiyorsa veya veriler herkese açık alandaysa ve dolayısıyla korunması gerekmiyorsa sınırsız modu kullanın.

Görselleştirme isteği JSON, CSV veya HTML yanıt biçimini belirtebilir. Yanıt biçimi, veri kaynağının veri tablosunu döndürdüğü biçimi belirler. CSV ve HTML biçimleri XSRF saldırılarına karşı savunmasız olmadığından bu biçimlere kısıtlı modda bile diğer alan adlarından erişilebilir.

Kısıtlanmamış modu belirtmek için isRestrictedAccessMode() öğesini aşağıdaki gibi geçersiz kılın:

  @Override
  protected boolean isRestrictedAccessMode() {
    return false;
  }

Kolaylık sağlaması açısından, kitaplıkla birlikte sağlanan tüm örnekler sınırsız erişim modunda çalışır.

Hatalar ve Uyarılar

Geçerli bir veri tablosu döndürülmesi mümkün olmadığında veya istendiğinde kitaplık bir DataSourceException gönderir. Örneğin, kullanıcının kimliğinin doğrulanamaması. Hatalar nedeniyle veri tablosu oluşturamadığında kitaplık bu istisnaları uygular. Veri kaynağınıza özgü durumlarda istisnalar kullanmak isteyebilirsiniz. Öyleyse DataSourceException sınıfından devralarak kendi hata istisna türlerinizi oluşturun. DataSourceException sınıfını doğrudan da verebilirsiniz.

DataSourceException sınıfı base paketinde bulunur ve şu parametreleri alır:

  • ReasonType 
    Bu parametre zorunludur. Kullanılabilir neden türleri, ReasonType sıralamasında tanımlanır. Mevcut neden türlerinden hiçbiri uygun değilse Other veya Internal özelliğini kullanabilirsiniz.
     
  • MessageToUser 
    Bu parametre, hata mesajının metnini tanımlar. Çoğu durumda, kullanıcıya ipucu olarak gösterilir. Bu nedenle, teknik veya gizli bilgilerin yer almaması önemlidir.

Hataları işlemek için datasource.DataSourceHelper içindeki yardımcı işlev grubunu kullanabilirsiniz. Bu örnekte, DataSourceException değeri almak ve veri servlet yanıtında bir hata ayarlamak için aynı setErrorServletResponse adına sahip iki işlevi çağırın. Bu işlevlerden biri veri kaynağı isteği, diğeri ise HttpServlet request alır ve DataSourceRequest oluşturmanın başarısız olduğu durumlarda kullanılır. Özellikleri ve Etkinlik Akışını Tanımlama bölümünde örnek bir uygulama sunulmuştur.

Bir veri tablosu döndürülmüyorsa kitaplık bir hata döndürür. Bir veri tablosu döndürülebiliyorsa ancak raporlanacak bir sorun varsa kitaplık, veri tablosuyla birlikte bir uyarı döndürür. Örneğin, kitaplık aşağıdaki durumlarda bir uyarı oluşturur:

  • sorgu görselleştirmesi kısaltılmış verilerle sonuçlanan bir LIMIT sağlar.
  • Sorgu görselleştirme, FORMAT ifadesinde geçersiz bir biçimlendirme kalıbı isterse.

Kendi uyarınızı eklemek için base.Warning örneği oluşturun ve addWarning() yöntemini kullanarak bunu veri tablonuza ekleyin.

Günlük kaydı

Kütüphane, Cakarta ortak günlük kaydını kullanır. Jakarta ortak günlük kaydı, halihazırda sahip olduğunuz en yaygın günlük kaydı sistemleriyle birlikte kullanılabilir. Günlük kaydı sisteminiz standart değilse bir bağdaştırıcı yazmanız gerekebilir. Daha ayrıntılı bilgi için Jakarta Commons Logging ana sayfasına göz atın.

Bir istisna atıldığında, günlüğe bilgi gönderilir. Günlüğe erişme şekliniz, kullandığınız günlük kaydı sistemine bağlıdır.