Güvenlik, Hata, Uyarı ve Günlük Kaydı İşlemleri

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

Güvenlik

Veri kaynakları, aşağıdaki iki erişim modundan biriyle çalışabilir:

  • Varsayılan olan kısıtlı erişim modundayken veri kaynakları yalnızca veri kaynağının bulunduğu alan adından gelen istekleri sunar. Kısıtlı mod, siteler arası istek sahtekarlığı (XSRF) saldırılarını engeller ve bu nedenle kısıtlanmamış erişim moduna göre daha güvenlidir. Veri kaynağı kitaplığı, yalnızca durumu geri almak için bir arayüz sağladığından, sunucu tarafında durumu veya verileri değiştirmek için bir arayüz sağlamadığı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ğrulama ile birlikte kısıtlı mod kullanılmalıdır. Kullanıcıların kimliğini doğrulama yöntemi, ortamınıza ve uygulamanıza bağlıdır.

  • Sınırsız erişim modundayken bir veri kaynağı, isteklerin kaynağı ne olursa olsun sunulur. Sınırsız 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 olabileceğini unutmayın. Veri kaynağının alanı dışındaki web sayfalarında görselleştirmelerin veri kaynağına erişmesi gerekiyorsa veya veriler kamu alanındaysa ve korunması gerekmiyorsa kısıtlanmamış modu kullanın.

Görselleştirme isteği JSON, CSV veya HTML biçiminde bir yanıt biçimi belirtebilir. Yanıt biçimi, veri kaynağının veri tablosu döndürme biçimini belirler. CSV ve HTML biçimleri XSRF saldırılarına karşı savunmasız olduğundan, kısıtlanmış modda bile diğer alan adlarından erişilebilir.

Sınırsız modu belirtmek için aşağıdaki şekilde isRestrictedAccessMode() değerini geçersiz kılın:

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

Kolaylık olması için 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ürmenin mümkün olmadığı veya istendiği durumlarda kitaplık bir DataSourceException atar. Örneğin, kullanıcının kimliği doğrulanamıyorsa. Hatalar veri tablosu oluşturmasını engellediğinde, kitaplık bu istisnaları atar. Veri kaynağınıza özgü durumlarda istisna sunmak isteyebilirsiniz. Öyleyse DataSourceException sınıfından devralma yaparak kendi hata istisna türlerinizi oluşturun. Ayrıca DataSourceException sınıfını doğrudan bırakabilirsiniz.

DataSourceException sınıfı base paketindedir, aşağıdaki parametrelere sahiptir:

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

Hataları işlemek için datasource.DataSourceHelper grubundaki yardımcı işlev grubunu kullanabilirsiniz. Bu durumda, DataSourceException işlevini almak ve veri servi 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 alır, diğeri ise HttpServlet request işlemini alır ve DataSourceRequest oluşturulamadığı durumlarda kullanılır. Özellikleri Tanımlama ve Etkinlik Akışı bölümünde örnek bir uygulama sunulmuştur.

Veri tablosu döndürülemiyorsa kitaplık bir hata döndürür. Veri tablosu döndürülebiliyorsa ancak bildirmekte 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ğlıyorsa.
  • bir sorgu görselleştirmesi bir FORMAT koşulunda geçersiz bir biçimlendirme kalıbı istiyorsa

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

Günlük Kaydı

Kitaplıkta Jakarta ortak günlükleri kullanılıyor. Jakarta ortak günlüğü, mevcut en yaygın günlük kaydı sistemleriyle kullanılabilir. Günlük kaydı sisteminiz standart değilse bir adaptör yazmanız gerekebilir. Daha ayrıntılı bilgi için Jakarta ortak günlük kaydı ana sayfasını inceleyin.

İstisna oluşturulduğunda günlüke bilgi gönderilir. Günlük dosyasına erişme şekliniz, kullandığınız günlük kaydı sistemine bağlıdır.