** ব্যাশ / শেল ইনজেকশন-নিরাপদ ভাসমান পয়েন্ট গণিত **
দ্রষ্টব্য: এই উত্তরের কেন্দ্রবিন্দু হ'ল বাশ (বা অন্যান্য শেলস) এ গণিত সম্পাদনের জন্য ইনজেকশন-নিরাপদ সমাধানের জন্য ধারণা সরবরাহ করা। অবশ্যই, উন্নত স্ট্রিং প্রসেসিং ইত্যাদি সম্পাদনের ক্ষেত্রে সামান্য সমন্বয় সহ একই ব্যবহার করা যেতে পারে
যে সমাধানগুলি উপস্থাপিত হয়েছিল, সেগুলির বেশিরভাগটি বাহ্যিক ডেটা (ভেরিয়েবল, ফাইল, কমান্ড লাইন, পরিবেশের ভেরিয়েবল) ব্যবহার করে ফ্লাইতে ছোট স্ক্রিপ্টলেট তৈরি করে। বাহ্যিক ইনপুটটি ইঞ্জিনে দূষিত কোড ইনজেকশনের জন্য ব্যবহার করা যেতে পারে, তাদের মধ্যে অনেকগুলি
নীচে বেসিক গণিত গণনা সম্পাদনের জন্য বিভিন্ন ভাষা ব্যবহারের সাথে তুলনা করা হয়েছে, যেখানে ভাসমান পয়েন্টের ফলাফল। এটি A + B * 0.1 (ভাসমান পয়েন্ট হিসাবে) গণনা করে।
সমস্ত সমাধানের প্রচেষ্টা গতিশীল স্ক্রিপ্টলেটগুলি এড়াতে এড়িয়ে যায়, যা বজায় রাখা অত্যন্ত কঠিন, পরিবর্তে তারা স্থির প্রোগ্রাম ব্যবহার করে এবং নির্দিষ্ট পরামিতিগুলিতে পরামিতিগুলি পাস করে। কোডগুলি ইনজেকশনের সম্ভাবনা হ্রাস করে - তারা নিরাপদে বিশেষ অক্ষরের সাথে পরামিতিগুলি পরিচালনা করবে। ব্যতিক্রমটি 'বিসি' যা ইনপুট / আউটপুট সুবিধা সরবরাহ করে না
ব্যতিক্রমটি 'বিসি', যা কোনও ইনপুট / আউটপুট সরবরাহ করে না, সমস্ত ডেটা স্টিডিনে প্রোগ্রামের মাধ্যমে আসে এবং সমস্ত আউটপুট স্টাডআউটে যায়। সমস্ত গণনা একটি স্যান্ডবক্সে কার্যকর করা হচ্ছে, যা পার্শ্ব প্রতিক্রিয়া (ফাইল খোলার ইত্যাদি) অনুমতি দেয় না। তত্ত্ব অনুসারে, ডিজাইনের মাধ্যমে ইঞ্জেকশন নিরাপদ!
A=5.2
B=4.3
# Awk: Map variable into awk
# Exit 0 (or just exit) for success, non-zero for error.
#
awk -v A="$A" -v B="$B" 'BEGIN { print A + B * 0.1 ; exit 0}'
# Perl
perl -e '($A,$B) = @ARGV ; print $A + $B * 0.1' "$A" "$B"
# Python 2
python -c 'import sys ; a = float(sys.argv[1]) ; b = float(sys.argv[2]) ; print a+b*0.1' "$A" "$B"
# Python 3
python3 -c 'import sys ; a = float(sys.argv[1]) ; b = float(sys.argv[2]) ; print(a+b*0.1)' "$A" "$B"
# BC
bc <<< "scale=1 ; $A + $B * 0.1"