নিরাপত্তা, ত্রুটি, সতর্কতা, এবং লগিং পরিচালনা করা

এই বিভাগে নিম্নলিখিত বিষয়গুলি কভার করে:

নিরাপত্তা

একটি ডেটা উত্স দুটি অ্যাক্সেস মোডের একটিতে কাজ করতে পারে:

  • সীমাবদ্ধ অ্যাক্সেস মোডে, যা ডিফল্ট, একটি ডেটা উত্স শুধুমাত্র সেই অনুরোধগুলিকে পরিবেশন করে যেগুলি একই ডোমেন থেকে উদ্ভূত হয় যেখানে ডেটা উত্সটি অবস্থিত। সীমাবদ্ধ মোড ক্রস-সাইট অনুরোধ জালিয়াতি (এক্সএসআরএফ) আক্রমণ প্রতিরোধ করে এবং তাই অনিয়ন্ত্রিত অ্যাক্সেস মোডের চেয়ে আরও নিরাপদ। যেহেতু ডেটা সোর্স লাইব্রেরি শুধুমাত্র ডেটা ফেরত দেওয়ার জন্য একটি ইন্টারফেস প্রদান করে, এবং সার্ভার সাইডে অবস্থা বা ডেটা পরিবর্তন করার জন্য নয়, শুধুমাত্র XSRF আক্রমণগুলিই সম্ভব যা ডেটা চুরি করার চেষ্টা করে৷ ডেটা চুরির প্রচেষ্টার বিরুদ্ধে আপনার ডেটা উৎসকে সুরক্ষিত করতে, কুকি-ভিত্তিক প্রমাণীকরণের সাথে সীমাবদ্ধ মোড ব্যবহার করতে হবে। আপনি যেভাবে ব্যবহারকারীদের প্রমাণীকরণ করবেন তা আপনার পরিবেশ এবং বাস্তবায়নের উপর নির্ভর করে।

  • অনিয়ন্ত্রিত অ্যাক্সেস মোডে, একটি ডেটা উত্স তাদের উত্স নির্বিশেষে সমস্ত অনুরোধ পরিবেশন করে৷ একটি ডেটা উৎস যা অনিয়ন্ত্রিত মোডে চলে তা কুকি-ভিত্তিক প্রমাণীকরণ দ্বারা সুরক্ষিত হতে পারে, তবে মনে রাখবেন যে ডেটা উত্সটি XSRF আক্রমণের জন্য ঝুঁকিপূর্ণ হবে। যদি ডেটা উৎসের ডোমেনের বাইরের ওয়েব পৃষ্ঠাগুলির ভিজ্যুয়ালাইজেশনগুলিকে ডেটা উত্স অ্যাক্সেস করতে হয়, বা যদি ডেটা সর্বজনীন ডোমেনে থাকে এবং তাই সুরক্ষিত করার প্রয়োজন না হয় তবে অনিয়ন্ত্রিত মোড ব্যবহার করুন৷

একটি ভিজ্যুয়ালাইজেশন অনুরোধ JSON, CSV বা HTML এর একটি প্রতিক্রিয়া বিন্যাস নির্দিষ্ট করতে পারে৷ প্রতিক্রিয়া বিন্যাস বিন্যাস নির্ধারণ করে যেখানে একটি ডেটা উত্স একটি ডেটা টেবিল প্রদান করে। যেহেতু CSV এবং এইচটিএমএল ফর্ম্যাটগুলি XSRF আক্রমণের জন্য ঝুঁকিপূর্ণ নয়, সেগুলি অন্যান্য ডোমেন থেকে অ্যাক্সেস করা যেতে পারে, এমনকি সীমাবদ্ধ মোডেও।

অনিয়ন্ত্রিত মোড নির্দিষ্ট করতে, নিম্নরূপ isRestrictedAccessMode() ওভাররাইড করুন:

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

সরলতার জন্য, লাইব্রেরির সাথে প্রদত্ত সমস্ত উদাহরণ অনিয়ন্ত্রিত অ্যাক্সেস মোডে চলে।

ত্রুটি এবং সতর্কতা

যখন একটি বৈধ ডেটা টেবিল ফেরত দেওয়া সম্ভব নয়, বা কাম্য, লাইব্রেরি একটি DataSourceException নিক্ষেপ করে। উদাহরণস্বরূপ যদি ব্যবহারকারীকে প্রমাণীকরণ করা যায় না। লাইব্রেরি এই ব্যতিক্রমগুলি নিক্ষেপ করে যখন ত্রুটিগুলি এটিকে ডেটা টেবিল তৈরি করতে বাধা দেয়। আপনি আপনার ডেটা উৎসের অনন্য পরিস্থিতিতে ব্যতিক্রমগুলি নিক্ষেপ করতে চাইতে পারেন। যদি তাই হয়, DataSourceException ক্লাস থেকে উত্তরাধিকারসূত্রে আপনার নিজস্ব ত্রুটি ব্যতিক্রম প্রকারগুলি তৈরি করুন। আপনি সরাসরি DataSourceException ক্লাস নিক্ষেপ করতে পারেন।

DataSourceException ক্লাসটি base প্যাকেজে অবস্থিত, এটি নিম্নলিখিত পরামিতিগুলি নেয়:

  • ReasonType
    এই পরামিতি বাধ্যতামূলক। উপলব্ধ কারণ প্রকারগুলি ReasonType এ সংজ্ঞায়িত করা হয়েছে৷ যদি উপলব্ধ কারণের ধরনগুলির মধ্যে কোনটি উপযুক্ত না হয় তবে আপনি Other বা Internal ব্যবহার করতে পারেন।
  • MessageToUser
    এই প্যারামিটার ত্রুটি বার্তার পাঠ্য সংজ্ঞায়িত করে। বেশিরভাগ ক্ষেত্রে, এটি ব্যবহারকারীর কাছে একটি টুলটিপ হিসাবে প্রদর্শিত হয়, তাই প্রযুক্তিগত বা গোপনীয় তথ্য অন্তর্ভুক্ত না করা গুরুত্বপূর্ণ।

আপনি ত্রুটিগুলি পরিচালনা করতে datasource.DataSourceHelper এ সহায়ক ফাংশনগুলির সেট ব্যবহার করতে পারেন৷ এই ক্ষেত্রে একটি setErrorServletResponse নিতে DataSourceException এর একই নামের সাথে দুটি ফাংশন কল করুন এবং ডেটা সার্লেট প্রতিক্রিয়াতে একটি ত্রুটি সেট করুন। এই ফাংশনগুলির মধ্যে একটি ডেটা উৎসের অনুরোধ নেয়, অন্যটি একটি HttpServlet request নেয় এবং এমন ক্ষেত্রে ব্যবহার করা হয় যেখানে একটি DataSourceRequest তৈরি করতে ব্যর্থ হয়। ডিফাইনিং ক্যাপাবিলিটিস এবং দ্য ফ্লো অফ ইভেন্টে একটি উদাহরণ বাস্তবায়ন প্রদান করা হয়েছে।

একটি ডেটা টেবিল ফেরত দেওয়া সম্ভব না হলে, লাইব্রেরি একটি ত্রুটি প্রদান করে। যদি একটি ডেটা টেবিল ফেরত দেওয়া সম্ভব হয়, কিন্তু রিপোর্ট করতে সমস্যা হয়, লাইব্রেরি ডেটা টেবিলের সাথে একসাথে একটি সতর্কতা প্রদান করে। উদাহরণস্বরূপ, লাইব্রেরি নিম্নলিখিত পরিস্থিতিতে একটি সতর্কতা তৈরি করে:

  • যদি একটি ক্যোয়ারী ভিজ্যুয়ালাইজেশন একটি LIMIT প্রদান করে যার ফলে ডেটা কেটে যায়।
  • যদি একটি ক্যোয়ারী ভিজ্যুয়ালাইজেশন একটি FORMAT ক্লজে একটি অবৈধ বিন্যাস প্যাটার্নের অনুরোধ করে।

আপনার নিজস্ব সতর্কতা যোগ করতে, base.Warning এর একটি উদাহরণ তৈরি করুন এবং addWarning() পদ্ধতি ব্যবহার করে আপনার ডেটা টেবিলে যোগ করুন।

লগিং

লাইব্রেরি জাকার্তা কমন্স লগিং ব্যবহার করে। জাকার্তা কমন্স লগিং সবচেয়ে সাধারণ লগিং সিস্টেমের সাথে ব্যবহার করা যেতে পারে যা আপনার কাছে ইতিমধ্যেই থাকতে পারে। আপনার লগিং সিস্টেম অ-মানক হলে আপনাকে একটি অ্যাডাপ্টার লিখতে হতে পারে। আরো বিস্তারিত জানার জন্য, জাকার্তা কমন্স লগিং হোম পেজ দেখুন।

যখন একটি ব্যতিক্রম নিক্ষেপ করা হয় তথ্য লগ পাঠানো হয়. আপনি লগ অ্যাক্সেস করার উপায় আপনার ব্যবহার করা লগিং সিস্টেমের উপর নির্ভর করে।