এসকিউএল ইনজেকশন আক্রমণগুলিতে আমি যা দেখেছি তা দেখে মনে হয় যে প্যারামেট্রাইজড ক্যোয়ারীগুলি, বিশেষত সঞ্চিত প্রক্রিয়াগুলির মধ্যে এই জাতীয় আক্রমণগুলির বিরুদ্ধে রক্ষা করার একমাত্র উপায়। আমি যখন কাজ করছিলাম (অন্ধকার যুগে ফিরে) সঞ্চিত প্রক্রিয়াগুলি দুর্বল অনুশীলন হিসাবে দেখা হত, মূলত কারণ এগুলি কম রক্ষণাবেক্ষণযোগ্য হিসাবে দেখা হয়েছিল; কম পরীক্ষামূলক; অত্যন্ত মিলিত; এবং একটি বিক্রেতার মধ্যে একটি সিস্টেম লক; ( এই প্রশ্নে আরও কিছু কারণ রয়েছে)।
যদিও আমি যখন কাজ করছিলাম তখন প্রকল্পগুলি এ জাতীয় আক্রমণগুলির সম্ভাবনা সম্পর্কে কার্যত অসচেতন ছিল; বিভিন্ন ধরণের দুর্নীতির বিরুদ্ধে ডাটাবেস সুরক্ষিত করার জন্য বিভিন্ন বিধি গৃহীত হয়েছিল। এই নিয়মগুলি সংক্ষেপে বলা যেতে পারে:
- কোনও ক্লায়েন্ট / অ্যাপ্লিকেশনটির ডেটাবেস টেবিলগুলিতে সরাসরি অ্যাক্সেস ছিল না।
- সমস্ত টেবিলের সমস্ত অ্যাক্সেস ভিউয়ের মাধ্যমে হয়েছিল (এবং বেস টেবিলগুলিতে সমস্ত আপডেট ট্রিগারগুলির মাধ্যমে সম্পন্ন হয়েছিল)।
- সমস্ত ডেটা আইটেম একটি ডোমেন নির্দিষ্ট ছিল।
- কোনও ডেটা আইটেমকে নলাবদ্ধ হওয়ার অনুমতি দেওয়া হয়নি - এর মধ্যে এমন প্রভাব রয়েছে যা ডিবিএগুলি উপলক্ষে দাঁত পিষেছিল; কিন্তু প্রয়োগ করা হয়েছিল।
- ভূমিকা এবং অনুমতিগুলি যথাযথভাবে সেট আপ করা হয়েছিল - উদাহরণস্বরূপ, কেবলমাত্র দর্শনগুলি ডেটা পরিবর্তন করার অধিকার দেওয়ার ক্ষেত্রে একটি সীমাবদ্ধ ভূমিকা role
তাহলে কি এই (প্রয়োগকারী) নিয়মের একটি সেট এসকিউএল ইনজেকশন আক্রমণ রোধে প্যারামিট্রাইজড প্রশ্নের জন্য উপযুক্ত বিকল্প (যদিও এই নির্দিষ্ট সেটটি অগত্যা প্রয়োজনীয় নয়)? তা না হলে কেন? ডেটাবেস (কেবলমাত্র) নির্দিষ্ট পদক্ষেপের মাধ্যমে এই জাতীয় আক্রমণগুলির বিরুদ্ধে সুরক্ষা দেওয়া যেতে পারে?
সম্পাদনা
প্রাথমিক জবাব প্রাপ্তির আলোকে প্রশ্নের জোর সামান্য পরিবর্তন হয়েছে। বেস প্রশ্ন অপরিবর্তিত।
EDIT2
প্যারামটারাইজড কোয়েরিতে নির্ভর করার পদ্ধতিকে সিস্টেমগুলিতে আক্রমণগুলির বিরুদ্ধে প্রতিরক্ষার একমাত্র পেরিফেরিয়াল পদক্ষেপ বলে মনে হয়। আমার কাছে মনে হয় যে আরও মৌলিক প্রতিরক্ষা উভয়ই কাম্য, এবং ইনজেকশন আক্রমণগুলির বিরুদ্ধে বিশেষত রক্ষা করার জন্য এমনকি এ জাতীয় প্রশ্নগুলির উপর নির্ভরতা বা কম সমালোচনা এমনকি নির্ভর করে না।
আমার প্রশ্নের অন্তর্ভুক্ত পদ্ধতির ডেটাবেস "আর্মারিং" এর উপর ভিত্তি করে ছিল এবং এটি কোনও কার্যকর বিকল্প কিনা তা আমার কোনও ধারণা ছিল না। আরও গবেষণায় পরামর্শ দেওয়া হয়েছে যে এরকম পন্থা রয়েছে। আমি নিম্নলিখিত উত্সগুলি পেয়েছি যা এই ধরণের পদ্ধতির জন্য কিছু পয়েন্টার সরবরাহ করে:
http://database-programmer.blogspot.com
http://thehelsinkideclaration.blogspot.com
আমি এই উত্সগুলি থেকে নেওয়া মূল নীতিগুলি হ'ল:
- একটি বিস্তৃত ডেটা অভিধান, একটি বিস্তৃত সুরক্ষা ডেটা অভিধানের সাথে মিলিত
- ডেটা অভিধান থেকে ট্রিগার, কোয়েরি এবং সীমাবদ্ধতার উত্স
- কোডটি ছোট করুন এবং ডেটা সর্বাধিক করুন
যদিও এখন পর্যন্ত আমার দেওয়া উত্তরগুলি খুব দরকারী এবং প্যারামটারাইজড কোয়েরিগুলিকে উপেক্ষা করার কারণে উদ্ভূত অসুবিধাগুলি নির্দেশ করে, শেষ পর্যন্ত তারা আমার মূল প্রশ্নের (গুলি) (এখন সাহসের সাথে জোর দেওয়া) উত্তর দেয় না।