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 menayangkan permintaan yang berasal dari domain yang sama dengan tempat sumber data berada. Mode Terbatas mencegah serangan pemalsuan permintaan lintas situs (XSRF) sehingga lebih aman daripada mode akses yang tidak dibatasi. Karena library sumber data menyediakan antarmuka untuk hanya menampilkan data, dan bukan untuk mengubah status atau data di sisi server, hanya serangan XSRF yang mencoba mencuri data yang mungkin terjadi. Agar sumber data Anda aman dari upaya mencuri 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 akan menayangkan semua permintaan, terlepas dari asalnya. Sumber data yang berjalan dalam mode tidak terbatas dapat dilindungi oleh autentikasi berbasis cookie, tetapi perhatikan 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 tempat sumber data menampilkan tabel data. Karena format CSV dan HTML tidak rentan terhadap serangan XSRF, format tersebut 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 berjalan dalam mode akses yang tidak dibatasi.

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 ini menampilkan pengecualian ini saat error mencegahnya membuat tabel data. Anda mungkin ingin menampilkan pengecualian dalam situasi yang unik untuk sumber data Anda. Jika demikian, buat jenis pengecualian error Anda sendiri dengan mewarisi dari class DataSourceException. Anda juga dapat menampilkan class DataSourceException secara langsung.

Class DataSourceException berada dalam paket base, dan memerlukan parameter berikut:

  • ReasonType
    Parameter ini wajib diisi. 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. Dalam sebagian besar kasus, 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 lainnya mengambil HttpServlet request dan digunakan jika terjadi kegagalan dalam membuat DataSourceRequest. Contoh implementasi diberikan dalam Menentukan Kemampuan dan Alur Peristiwa.

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

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

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

Logging

Library menggunakan logging Common Jakarta. Logging umum Jakarta dapat digunakan dengan sistem logging paling umum yang mungkin sudah Anda miliki. Anda mungkin perlu menulis adaptor jika sistem logging non-standar. Untuk detail selengkapnya, lihat halaman beranda logging umum Jakarta.

Saat pengecualian dilempar, informasi akan dikirimkan ke log. Cara Anda mengakses log bergantung pada sistem logging yang Anda gunakan.