আরও গবেষণা থেকে, আমি খুঁজে পেয়েছি:
http://dev.mysql.com/doc/refman/5.1/en/news-5-1-1.html
সুরক্ষা ফিক্স:
মাল্টি-বাইট এনকোডিং প্রক্রিয়াকরণে একটি এসকিউএল-ইনজেকশন সুরক্ষা গর্ত পাওয়া গেছে। বাগটি সার্ভারে ছিল, ভুলভাবে স্ট্রিংটিকে পার্সিং করে mysql_real_escape_string () C API ফাংশন দিয়ে পালিয়ে গেছে।
এই দুর্বলতা ওএসডিবি কনসোর্টিয়ামের আন্তঃ-প্রকল্প সুরক্ষা সহযোগিতার অংশ হিসাবে জোশ বার্কাস এবং টম লেন আবিষ্কার করেছিলেন এবং প্রতিবেদন করেছিলেন। এসকিউএল ইঞ্জেকশন সম্পর্কে আরও তথ্যের জন্য, দয়া করে নীচের পাঠ্যটি দেখুন।
আলোচনা। মাল্টি-বাইট এনকোডিং প্রক্রিয়াকরণে একটি এসকিউএল ইঞ্জেকশন সুরক্ষা গর্ত পাওয়া গেছে। একটি এসকিউএল ইনজেকশন সুরক্ষা গর্ত এমন একটি পরিস্থিতি অন্তর্ভুক্ত করতে পারে যার মাধ্যমে যখন কোনও ব্যবহারকারী কোনও ডাটাবেসে ডেটা toোকানোর জন্য সরবরাহ করে, তখন ব্যবহারকারী এসকিউএল স্টেটমেন্টগুলিতে ইনজেকশন দিতে পারে যা সার্ভারটি কার্যকর করবে। এই দুর্বলতার জন্য, যখন অক্ষর সেট-অজানা পলায়ন ব্যবহার করা হয় (উদাহরণস্বরূপ, পিএইচপি-তে অ্যাডল্যাশেস) (), কিছু মাল্টি-বাইট অক্ষর সেটগুলিতে (উদাহরণস্বরূপ, এসজেআইএস, বিআইজি 5 এবং গিগাবাইট) এসিডিংকে বাইপাস করা সম্ভব। ফলস্বরূপ, অ্যাডলেসস () এর মতো কোনও ফাংশন এসকিউএল-ইনজেকশন আক্রমণ আটকাতে সক্ষম হয় না। এটি সার্ভারের দিক থেকে ঠিক করা অসম্ভব। অ্যাপ্লিকেশনগুলির জন্য কোনও ক্রিয়াকলাপ যেমন- mysql_real_escape_string () দ্বারা প্রস্তাবিত অক্ষর সেট-সচেতন এস্কেপিং ব্যবহার করার জন্য সর্বোত্তম সমাধান solution
যাইহোক, মাইএসকিউএল সার্ভারটি কীভাবে mysql_real_escape_string () এর আউটপুটকে পার্স করে তা সনাক্ত করা হয়েছিল। ফলস্বরূপ, এমনকি যখন অক্ষর সেট-সচেতন ফাংশন mysql_real_escape_string () ব্যবহৃত হয়েছিল, এসকিউএল ইঞ্জেকশনটি সম্ভব ছিল। এই বাগ সংশোধন করা হয়েছে।
কর্মক্ষেত্র আপনি যদি মাইএসকিউএলকে এমন কোনও সংস্করণে আপগ্রেড করতে অক্ষম হন যা mysql_real_escape_string () পার্সিং-এ বাগের ফিক্স অন্তর্ভুক্ত করে তবে মাইএসকিউএল 5.0.1 বা ততোধিক রান করে, আপনি NO_BACKSLASH_ESCAPES এসকিউএল মোডটি কর্মক্ষেত্র হিসাবে ব্যবহার করতে পারেন। (এই মোডটি মাইএসকিউএল 5.0.1 এ প্রবর্তিত হয়েছিল।) কোন_ব্যাক্সএলএসএইচ_এসসিএপিএস একটি এসকিউএল স্ট্যান্ডার্ড সামঞ্জস্যতা মোড সক্ষম করে, যেখানে ব্যাকস্ল্যাশকে একটি বিশেষ অক্ষর হিসাবে বিবেচনা করা হয় না। ফলাফল এমন হবে যে প্রশ্নগুলি ব্যর্থ হবে।
বর্তমান সংযোগের জন্য এই মোডটি সেট করতে, নিম্নলিখিত এসকিউএল বিবৃতিটি প্রবেশ করুন:
SET sql_mode='NO_BACKSLASH_ESCAPES';
আপনি সমস্ত ক্লায়েন্টদের জন্য বিশ্বব্যাপী মোডটি সেট করতে পারেন:
SET GLOBAL sql_mode='NO_BACKSLASH_ESCAPES';
এই এসকিউএল মোডটি স্বয়ংক্রিয়ভাবে সক্ষম করা যায় যখন সার্ভারটি কমান্ড-লাইন বিকল্পটি ব্যবহার করে --sql-মোড = NO_BACKSLASH_ESCAPES ব্যবহার করে বা সার্ভার বিকল্প ফাইলে sql- মোড = NO_BACKSLASH_ESCAPES সেট করে (উদাহরণস্বরূপ, my.cnf বা my.ini) সক্ষম করা যায় আপনার সিস্টেমের উপর নির্ভর করে)। (বাগ # 8378, সিভিই-2006-2753)
বাগ # 8303 দেখুন।