सुरक्षा, गड़बड़ियों, चेतावनियों, और लॉग को मैनेज करना

इस भाग में निम्नलिखित विषय सम्मिलित हैं:

सुरक्षा

डेटा सोर्स, इन दो में से किसी एक ऐक्सेस मोड में काम कर सकता है:

  • डिफ़ॉल्ट ऐक्सेस मोड में, जो डिफ़ॉल्ट रूप से डिफ़ॉल्ट है, डेटा सोर्स सिर्फ़ उन अनुरोधों को दिखाता है जो उसी डोमेन से आते हैं जिसमें डेटा सोर्स मौजूद होता है. पाबंदी मोड, क्रॉस-साइट अनुरोध (जालसाज़ी) (XSRF) के हमलों से बचाता है. इसलिए, बिना पाबंदी वाले ऐक्सेस मोड की तुलना में यह ज़्यादा सुरक्षित है. डेटा सोर्स लाइब्रेरी सिर्फ़ डेटा दिखाने वाले इंटरफ़ेस के लिए इंटरफ़ेस उपलब्ध कराती है, न कि सर्वर साइड पर स्थिति या डेटा में बदलाव करने के लिए, बल्कि डेटा चुराने की कोशिश करने वाले XSRF हमले ही कर सकते हैं. अपने डेटा सोर्स को डेटा चुराने की कोशिशों से सुरक्षित रखने के लिए, कुकी मोड में पुष्टि करने के साथ पाबंदी मोड का इस्तेमाल किया जाना चाहिए. जिस तरह से उपयोगकर्ताओं की पुष्टि की जाती है वह आपके एनवायरमेंट और लागू होने के तरीके पर निर्भर करता है.

  • बिना पाबंदी वाले ऐक्सेस मोड में, डेटा सोर्स अपने सभी अनुरोधों को दिखाता है चाहे वे किसी भी जगह पर हों. बिना पाबंदी वाले मोड में चलने वाले डेटा सोर्स को कुकी आधारित ऑथेंटिकेशन से सुरक्षित किया जा सकता है. हालांकि, ध्यान रखें कि डेटा सोर्स पर XSRF के हमले का जोखिम हो सकता है. अगर डेटा सोर्स के डोमेन के बाहर, वेब पेजों पर विज़ुअलाइज़ेशन के लिए डेटा सोर्स को ऐक्सेस करना ज़रूरी है या सार्वजनिक डेटा में डेटा को सुरक्षित रखना ज़रूरी नहीं है, तो बिना पाबंदी वाले मोड का इस्तेमाल करें.

विज़ुअलाइज़ेशन अनुरोध में JSON, CSV या एचटीएमएल के रिस्पॉन्स फ़ॉर्मैट के बारे में बताया जा सकता है. रिस्पॉन्स फ़ॉर्मैट से उस फ़ॉर्मैट का पता चलता है जिसमें डेटा सोर्स, डेटा टेबल दिखाता है. CSV और एचटीएमएल फ़ॉर्मैट पर एक्सएसआरएफ़ हमलों का जोखिम नहीं होता है. इसलिए, इन्हें दूसरे डोमेन से ऐक्सेस किया जा सकता है, चाहे वे पाबंदी मोड में ही क्यों न हों.

बिना पाबंदी वाले मोड के बारे में बताने के लिए, isRestrictedAccessMode() को इस तरह बदलें:

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

इसका मतलब है कि लाइब्रेरी के सभी उदाहरण बिना किसी पाबंदी के ऐक्सेस मोड में उपलब्ध हैं.

गड़बड़ियां और चेतावनियां

मान्य डेटा टेबल दिखाने के लिए, लाइब्रेरी का इस्तेमाल करके DataSourceException का इस्तेमाल किया जा सकता है. उदाहरण के लिए, अगर उपयोगकर्ता की पुष्टि नहीं की जा सकी. अगर ये गड़बड़ियां डेटा टेबल बनाने से रोकती हैं, तो लाइब्रेरी इन अपवादों को दिखाती है. हो सकता है कि आप अपने डेटा सोर्स के लिए खास स्थितियों में अपवाद चाहते हों. अगर ऐसा है, तो DataSourceException क्लास से इनहेरिट करके, अपने हिसाब से गड़बड़ी के अपवाद टाइप बनाएं. DataSourceException क्लास को सीधे भी थ्रो किया जा सकता है.

DataSourceException क्लास, base पैकेज में मौजूद होती है, जो इन पैरामीटर का इस्तेमाल करती है:

  • ReasonType
    यह पैरामीटर ज़रूरी है. उपलब्ध वजह, ReasonType enum में बताए गए हैं. अगर इनमें से कोई भी वजह सही नहीं है, तो आप Other या Internal का इस्तेमाल करें.
     
  • MessageToUser
    यह पैरामीटर, गड़बड़ी के मैसेज का टेक्स्ट बताता है. ज़्यादातर मामलों में, यह उपयोगकर्ता को टूलटिप के रूप में दिखाया जाता है, इसलिए तकनीकी या गोपनीय जानकारी शामिल न करना ज़रूरी है.

गड़बड़ियों को ठीक करने के लिए, datasource.DataSourceHelper में हेल्पर फ़ंक्शन के सेट का इस्तेमाल किया जा सकता है. इस मामले में, DataSourceException लेने के लिए, setErrorServletResponse के समान नाम वाले दो फ़ंक्शन को कॉल करें और डेटा सर्लेट रिस्पॉन्स पर गड़बड़ी सेट करें. इनमें से एक फ़ंक्शन एक डेटा स्रोत अनुरोध लेता है, दूसरा HttpServlet request लेता है और उन मामलों में इसका उपयोग किया जाता है, जब DataSourceRequest बनाने में कोई समस्या होती है. तय करने की क्षमताएं और इवेंट के फ़्लो में एक उदाहरण लागू किया गया है.

अगर किसी डेटा टेबल को नहीं दिखाया जा सकता, तो लाइब्रेरी में कोई गड़बड़ी दिखती है. अगर किसी डेटा टेबल को दिखाया जा सकता है, लेकिन रिपोर्ट करने में कोई समस्या आ रही है, तो लाइब्रेरी में डेटा टेबल के साथ एक चेतावनी दिखती है. उदाहरण के लिए, लाइब्रेरी इन स्थितियों में चेतावनी देती है:

  • अगर क्वेरी क्वेरी से LIMIT मिलता है, जिसकी वजह से डेटा छोटा होता है.
  • अगर कोई क्वेरी विज़ुअलाइज़ेशन, FORMAT क्लॉज़ में अमान्य फ़ॉर्मैटिंग पैटर्न का अनुरोध करता है.

अपनी चेतावनी जोड़ने के लिए, base.Warning का एक इंस्टेंस बनाएं और addWarning() तरीके का इस्तेमाल करके उसे अपनी डेटा टेबल में जोड़ें.

लॉग इन करना

लाइब्रेरी में जकार्ता कॉमन्स लॉगिंग का इस्तेमाल किया गया है. जकार्ता कॉमन्स के लॉग का इस्तेमाल, उन सामान्य लॉग इन सिस्टम के साथ किया जा सकता है जो पहले से आपके पास मौजूद हों. अगर आपका लॉगिंग सिस्टम गैर-मानक है, तो आपको एक अडैप्टर लिखना पड़ सकता है. ज़्यादा जानकारी के लिए, जकार्ता कॉमन्स का होम पेज लॉग करना देखें.

जब अपवाद के तौर पर दी गई जानकारी लॉग में भेजी जाती है. लॉग को ऐक्सेस करने का तरीका, उस लॉगिंग सिस्टम के हिसाब से तय होता है जिसका इस्तेमाल किया जा रहा है.