PDO তে PHP তে ক্যোয়ারী সমস্যা
আপনি ইতিমধ্যেই জানেন যে, SQL ক্যোয়ারী SQL ইনজেকশনের জন্য ঝুঁকিপূর্ণ। PDO এক্সটেনশন ইনজেকশন মোকাবেলা করার জন্য তৈরি করা হয়েছে, কিন্তু সরাসরি, ডিফল্টভাবে, এটি এটি করে না।
আসুন একটি উদাহরণের মাধ্যমে সমস্যাটি দেখি। ধরি আমাদের নিম্নলিখিত ক্যোয়ারী আছে, যেখানে একটি ভেরিয়েবল ঢোকানো হচ্ছে:
<?php
$sql = "SELECT * FROM users WHERE id=$id";
$res = $pdo->query($sql);
?>
ধরি আমাদের ভেরিয়েবলটি বাইরে থেকে আসে, উদাহরণস্বরূপ, GET প্যারামিটার থেকে। সরলতার জন্য, তবে, আসুন শুধু এর মান ম্যানুয়ালি সেট করি। আমরা একটি সংখ্যাসূচক মান আশা করি, উদাহরণস্বরূপ, এমন:
<?php
$id = 1;
?>
যাইহোক, একজন দূষিত হ্যাকার নিম্নলিখিত
মান পাঠাতে পারে (ধরে নিন আমাদের
একটি role ফিল্ড আছে):
<?php
$id = '-1 OR role="admin"';
?>
এর ফলে, আমরা নিচের ক্যোয়ারীটি চেয়েছিলাম:
<?php
$sql = "SELECT * FROM users WHERE id=1";
$res = $pdo->query($sql);
?>
কিন্তু পেলাম নিচের ক্যোয়ারীটি, যা ওয়েবসাইটের অ্যাডমিনিস্ট্রেটরকে বের করে আনে:
<?php
$sql = "SELECT * FROM users WHERE id=-1 OR role="admin"";
$res = $pdo->query($sql);
?>
এই অবস্থা এড়াতে, PDO তে একটি বিশেষ মেকানিজম প্রদান করা হয়েছে, যার নাম প্রস্তুত ক্যোয়ারী। সেগুলো আমরা পরবর্তী পাঠে আলোচনা করব।
ইচ্ছাকৃতভাবে আপনার ডাটাবেসে একটি SQL-ইনজেকশন সম্পন্ন করুন।