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

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

सुरक्षा

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

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

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

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

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

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

इसे आसानी से समझने के लिए, लाइब्रेरी के साथ दिए गए सभी उदाहरण बिना पाबंदी वाले ऐक्सेस मोड में चलते हैं.

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

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

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

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

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

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

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

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

लॉग इन करना

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

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