পোস্ট কোরে ফাংশনে এসকিউএল ইঞ্জেকশন বনাম প্রস্তুত ক্যোয়ারী


30

পোস্টগ্রিসে কি এসকিউএল ইঞ্জেকশন থেকে রক্ষা করার প্রক্রিয়া হিসাবে সমালোচনা এবং ব্যবহারকারী নির্ধারিত ফাংশন সমান ?
অন্য পদ্ধতির একটি পদ্ধতির বিশেষ সুবিধা আছে?

উত্তর:


36

এটা নির্ভর করে.

এসকিউএল ফাংশন

সহ LANGUAGE sql, উত্তরটি হ্যাঁ হয়

উত্তীর্ণ প্যারামিটারগুলি মান হিসাবে গণ্য করা হয় এবং এসকিউএল-ইনজেকশন সম্ভব না - যতক্ষণ আপনি শরীর থেকে অনিরাপদ ফাংশনগুলি কল করবেন না এবং প্যারামিটারগুলি পাস করবেন।

পিএল / পিজিএসকিউএল ফাংশন

সহ LANGUAGE plpgsql, উত্তরটি সাধারণত হ্যাঁ হয়

যাইহোক , পিএল / পিজিএসকিউএল ডায়নামিক এসকিউএলকে অনুমতি দেয় যেখানে পাস হওয়া প্যারামিটারগুলি (বা অংশগুলি) একটি কোয়েরি স্ট্রিংয়ের সাথে সংযুক্ত করা হয় এবং এর সাথে সম্পাদন করা হয় EXECUTE। এটি ব্যবহারকারীর ইনপুটকে এসকিউএল কোডে রূপান্তর করতে পারে এবং এসকিউএল ইঞ্জেকশনটিকে সম্ভব করে তোলে । ফাংশন বডিটি সঠিকভাবে পরিচালনা করে কিনা তা আপনি বাইরে থেকে বলতে পারবেন না। সরঞ্জাম সরবরাহ করা হয়।

যেখানে আপনার প্রয়োজন সেখানে কেবল গতিশীল এসকিউএল ব্যবহার করুন। মান হিসাবে প্যারামিটার ব্যবহার করে সাদমান এসকিউএল স্টেটমেন্টগুলি এসকিউএল ফাংশনগুলির মতো এসকিউএল ইঞ্জেকশনের বিরুদ্ধে নিরাপদ।

জন্য গতিশীল এসকিউএল , বিশেষ করে পাস মান সঙ্গে মান হিসাবে:

অধ্যক্ষের পক্ষে এসকিউএল ইঞ্জেকশনটিকে অসম্ভব করে তোলে।

আপনি যদি এসকিউএল স্ট্রিংয়ে মানগুলি একত্রীকরণ করেন তবে ব্যবহার করুন:

একক উদ্ধৃতিতে স্ট্র্যাপ মোড়ানোনিরাপদে , এর ফলে বাক্য গঠন ত্রুটি এবং এসকিউএল ইঞ্জেকশন এড়ানো হবে।

প্রক্রিয়া পরামিতি যা এসকিউএল স্ট্রিংয়ের সাথে সনাক্তকারী হিসাবে বিবেচিত হবে :

নিরাপদে নিরাপদে ডাবল- কোটে স্ট্রিংগুলি সংযুক্ত করেযেখানে প্রয়োজন সেখানে , এর ফলে বাক্য গঠন ত্রুটি এবং এসকিউএল ইঞ্জেকশন এড়ানো হবে।

সম্পর্কিত:

ব্যবহারকারীর ইনপুট থেকে কখনও স্ট্রিং তৈরি করবেন না এবং চালান। এটিতে শনাক্তকারীদের অন্তর্ভুক্ত রয়েছে যা সরাসরি কোনও ব্যবহারকারী দ্বারা পাস করা হয় বা সিস্টেম ক্যাটালগ থেকে আনা হয়। সবগতিশীল এসকিউএল তৈরি করার সময় ব্যবহারকারীর ইনপুটের মতো আচরণ করতে হবে এবং নিরাপদে উদ্ধৃতি দিতে হবে!

এই সম্পর্কিত উত্তরের কর্মক্ষমতা জড়িত সম্পর্কে আরও :

এসকিউএল-ইনজেকশনের মূল বিষয়গুলি:

অনুরূপ বিবেচনাগুলি অন্যান্য সার্ভার-সাইড ভাষাগুলিতে প্রয়োগ হয় যা গতিশীল এসকিউএলকে অনুমতি দেয়।


সুতরাং, সংক্ষেপে: যদি 1) আমি কেবল ভাষার স্ক্যুএল ব্যবহার করি, তবে আমি নিরাপদ, 2) আমি যদি পিএলপিএলএসএলকিউ ব্যবহার করি তবে নির্বাহ না করি তবে আমি নিরাপদ, 3) আমি যদি পিএলপসকিএল ব্যবহার করি এবং কার্যকর করি তবে সনাক্তকারী এবং% s বা% L যথাযথ হিসাবে আমি নিরাপদ, বা 4) যদি আমি plpgsql ব্যবহার করি এবং এক্সিকিউট করি এবং সনাক্তকারী তবে% I বা উদ্ধৃতি_নিযুক্ত যথাযথ হিসাবে আমি নিরাপদ। সঠিক?
mickeyf_support_Monica

@ মাইকিফ: মূলত হ্যাঁ এছাড়াও, যখনই সম্ভব USINGমানগুলি পাস করার জন্য এই ধারাটি ব্যবহার করুন EXECUTE। আপনি কোনও এসকিউএল ফাংশন এবং প্যারামিটারগুলির মধ্যে থেকে একটি পিএল / পিজিএসকিউএল ফাংশন কল করতে পারেন । সুতরাং, একেবারে সঠিক হতে হবে, আপনি যতক্ষণ না কোনও অনিরাপদ ফাংশন প্রত্যক্ষ বা অপ্রত্যক্ষভাবে কল না করেন ততক্ষণ আপনি নিরাপদ। আপনার সমস্ত ফাংশন যদি সঠিকভাবে করা হয় তবে তা ঘটতে পারে না।
এরউইন ব্র্যান্ডস্টেটার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.