Menangani Keamanan, Error, Peringatan, dan Logging

Bagian ini berisi berbagai topik berikut:

Keamanan

Sumber data dapat beroperasi dalam salah satu dari dua mode akses berikut:

  • Dalam mode akses terbatas, yang merupakan default, sumber data hanya melayani permintaan tersebut yang berasal dari domain yang sama dengan tempat sumber data tersebut berada. Mode terbatas mencegah serangan pemalsuan permintaan lintas situs (XSRF) sehingga lebih aman daripada mode akses tidak terbatas. Karena library sumber data menyediakan antarmuka hanya untuk menampilkan data, bukan untuk mengubah status atau data di sisi server, hanya serangan XSRF yang mencoba mencuri data. Agar sumber data Anda aman dari upaya pencurian data, mode terbatas harus digunakan bersama dengan autentikasi berbasis cookie. Cara Anda mengautentikasi pengguna bergantung pada lingkungan dan penerapan Anda.

  • Dalam mode akses tidak terbatas, sumber data melayani semua permintaan, terlepas dari asalnya. Sumber data yang berjalan dalam mode tidak terbatas dapat dilindungi oleh autentikasi berbasis cookie, tetapi perlu diperhatikan bahwa sumber data akan rentan terhadap serangan XSRF. Gunakan mode tidak terbatas jika visualisasi di halaman web di luar domain sumber data perlu mengakses sumber data, atau jika data berada di domain publik sehingga tidak perlu dilindungi.

Permintaan visualisasi dapat menentukan format respons JSON, CSV, atau HTML. Format respons menentukan format yang digunakan sumber data untuk menampilkan tabel data. Karena format CSV dan HTML tidak rentan terhadap serangan XSRF, format ini dapat diakses dari domain lain, bahkan dalam mode terbatas.

Untuk menentukan mode tidak terbatas, ganti isRestrictedAccessMode() sebagai berikut:

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

Untuk mempermudah, semua contoh yang disediakan dengan library dijalankan dalam mode akses tidak terbatas.

Error dan Peringatan

Jika tidak memungkinkan, atau diinginkan, untuk menampilkan tabel data yang valid, library akan menampilkan DataSourceException. Misalnya jika pengguna tidak dapat diautentikasi. Library akan menampilkan pengecualian ini saat error mencegahnya membuat tabel data. Anda mungkin ingin menampilkan pengecualian dalam situasi yang unik untuk sumber data Anda. Jika ya, buat jenis pengecualian error Anda sendiri dengan mewarisi dari class DataSourceException. Anda juga dapat menampilkan class DataSourceException secara langsung.

Class DataSourceException terletak dalam paket base, yang menggunakan parameter berikut:

  • ReasonType 
    Parameter ini wajib. Jenis alasan yang tersedia ditentukan dalam enum ReasonType. Jika tidak ada jenis alasan yang tersedia yang cocok, Anda dapat menggunakan Other atau Internal.
     
  • MessageToUser 
    Parameter ini menentukan teks pesan error. Biasanya, informasi ini ditampilkan kepada pengguna sebagai tooltip, sehingga penting untuk tidak menyertakan informasi teknis atau rahasia.

Anda dapat menggunakan kumpulan fungsi bantuan di datasource.DataSourceHelper untuk menangani error. Dalam hal ini, panggil dua fungsi dengan nama setErrorServletResponse yang sama untuk mengambil DataSourceException dan menetapkan error pada respons servlet data. Salah satu fungsi ini mengambil permintaan sumber data, fungsi yang lain mengambil HttpServlet request, dan digunakan jika terjadi kegagalan dalam membuat DataSourceRequest. Contoh implementasi disediakan dalam Menentukan Kemampuan dan Alur Peristiwa.

Jika tabel data tidak dapat ditampilkan, library akan menampilkan error. Jika tabel data dapat ditampilkan, tetapi ada masalah yang perlu dilaporkan, library akan menampilkan peringatan bersama dengan tabel data. Misalnya, library membuat peringatan dalam situasi berikut:

  • jika visualisasi kueri memberikan LIMIT yang menghasilkan data terpotong.
  • jika visualisasi kueri meminta pola pemformatan yang tidak valid dalam klausa FORMAT.

Untuk menambahkan peringatan, buat instance base.Warning dan tambahkan ke tabel data menggunakan metode addWarning().

Logging

Perpustakaan ini menggunakan logging commons Jakarta. Jakarta commons logging dapat digunakan dengan sistem logging paling umum yang mungkin sudah Anda miliki. Anda mungkin perlu menulis adaptor jika sistem logging Anda tidak standar. Untuk mengetahui detail selengkapnya, lihat halaman beranda logging umum Jakarta.

Jika pengecualian ditampilkan, informasi akan dikirim ke log. Cara Anda mengakses log bergantung pada sistem logging yang Anda gunakan.