কিভাবে পিএইচপি তে এসকিউএল ইনজেকশন প্রতিরোধ করবেন (ছবি সহ)

সুচিপত্র:

কিভাবে পিএইচপি তে এসকিউএল ইনজেকশন প্রতিরোধ করবেন (ছবি সহ)
কিভাবে পিএইচপি তে এসকিউএল ইনজেকশন প্রতিরোধ করবেন (ছবি সহ)

ভিডিও: কিভাবে পিএইচপি তে এসকিউএল ইনজেকশন প্রতিরোধ করবেন (ছবি সহ)

ভিডিও: কিভাবে পিএইচপি তে এসকিউএল ইনজেকশন প্রতিরোধ করবেন (ছবি সহ)
ভিডিও: টিভি থেকে ডিলিট হওয়া যে কোন চ্যানেল ফিরিয়ে আনুন ২ মিনিটে/Easy way to get back deleted tv chanel dish 2024, এপ্রিল
Anonim

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

প্রস্তুত বিবৃতিগুলি সংকলিত এসকিউএল স্টেটমেন্টের সাথে ভেরিয়েবলকে একত্রিত করে, যাতে এসকিউএল এবং ভেরিয়েবল আলাদাভাবে পাঠানো হয়। ভেরিয়েবলগুলি তখন কেবল স্ট্রিং হিসাবে ব্যাখ্যা করা হয় এবং এসকিউএল স্টেটমেন্টের অংশ নয়। নীচের ধাপে পদ্ধতিগুলি ব্যবহার করে, আপনাকে mysql_real_escape_string () এর মতো অন্য কোন SQL ইনজেকশন ফিল্টারিং কৌশল ব্যবহার করতে হবে না।

ধাপ

2 এর 1 ম অংশ: SQL ইনজেকশন বোঝা

ধাপ ১. এসকিউএল ইনজেকশন হল এসকিউএল ডাটাবেস ব্যবহারকারী অ্যাপ্লিকেশনে এক ধরনের দুর্বলতা।

দুর্বলতা দেখা দেয় যখন ব্যবহারকারীর ইনপুট এসকিউএল স্টেটমেন্টে ব্যবহৃত হয়:

$ name = $ _GET ['ব্যবহারকারীর নাম']; $ query = "tbl_user থেকে পাসওয়ার্ড নির্বাচন করুন যেখানে নাম = '$ name'";

ধাপ 2. ইউআরএল ভেরিয়েবল ইউজারনেমে ব্যবহারকারী যে মানটি প্রবেশ করে তা $ name ভেরিয়েবলের জন্য নির্ধারিত হবে।

এটি সরাসরি এসকিউএল স্টেটমেন্টে স্থাপন করা হয়, যাতে ব্যবহারকারীর জন্য এসকিউএল স্টেটমেন্ট সম্পাদনা করা সম্ভব হয়।

$ name = "admin 'অথবা 1 = 1 -"; $ query = "tbl_user থেকে পাসওয়ার্ড নির্বাচন করুন যেখানে নাম = '$ name'";

ধাপ The. এসকিউএল ডাটাবেস এরপর এসকিউএল স্টেটমেন্ট পাবে:

Tbl_users থেকে পাসওয়ার্ড নির্বাচন করুন যেখানে নাম = 'অ্যাডমিন' অথবা 1 = 1 - '

  • এটি বৈধ এসকিউএল, কিন্তু ব্যবহারকারীর জন্য একটি পাসওয়ার্ড ফেরত দেওয়ার পরিবর্তে, বিবৃতিটি tbl_user সারণির সমস্ত পাসওয়ার্ড ফিরিয়ে দেবে। এটি এমন কিছু নয় যা আপনি আপনার ওয়েব অ্যাপ্লিকেশনগুলিতে চান।

    2 এর 2 অংশ: প্রস্তুত বিবৃতি তৈরি করতে mySQLi ব্যবহার করা

    2542820 1
    2542820 1

    ধাপ 1. mySQLi SELECT Query তৈরি করুন।

    MySQLi প্রস্তুত বিবৃতি ব্যবহার করে একটি টেবিল থেকে তথ্য নির্বাচন করতে নিচের কোডটি ব্যবহার করুন।

    $ name = $ _GET ['ব্যবহারকারীর নাম']; যদি ($ stmt = $ mysqli-> প্রস্তুত করুন ("tbl_users থেকে SELECT পাসওয়ার্ড যেখানে নাম =?")) $ stmt-> bind_param ("s", $ name); // বিবৃতি কার্যকর করুন। $ stmt-> এক্সিকিউট (); // প্রশ্ন থেকে ভেরিয়েবল পান। $ stmt-> bind_result ($ pass); // তথ্য আনুন। $ stmt-> আনা (); // তথ্য প্রদর্শন। printf ("ব্যবহারকারীর পাসওয়ার্ড %s হল %s / n", $ name, $ pass); // প্রস্তুত বিবৃতি বন্ধ করুন। $ stmt-> বন্ধ (); }

    দ্রষ্টব্য: $ mysqli ভেরিয়েবল হল mySQLi কানেকশন অবজেক্ট।

    2542820 2
    2542820 2

    ধাপ 2. mySQLi INSERT ক্যোয়ারী তৈরি করুন।

    MySQLi প্রস্তুত বিবৃতি ব্যবহার করে একটি টেবিলে তথ্য প্রবেশ করানোর জন্য নিচের কোডটি ব্যবহার করুন।

    $ name = $ _GET ['ব্যবহারকারীর নাম']; $ পাসওয়ার্ড = $ _GET ['পাসওয়ার্ড']; if ($ stmt = $ mysqli-> প্রস্তুত করুন ("bোকান tbl_users (নাম, পাসওয়ার্ড) মানসমূহ (?,?)") $ stmt-> bind_param ("ss", $ name, $ password); // বিবৃতিটি কার্যকর করুন। $ stmt-> এক্সিকিউট (); // প্রস্তুত বিবৃতি বন্ধ করুন। $ stmt-> বন্ধ (); }

    দ্রষ্টব্য: $ mysqli ভেরিয়েবল হল mySQLi কানেকশন অবজেক্ট।

    2542820 3
    2542820 3

    ধাপ 3. mySQLi আপডেট প্রশ্ন তৈরি করুন।

    MySQLi প্রস্তুত বিবৃতি ব্যবহার করে একটি টেবিলে ডেটা আপডেট করতে নীচের কোডটি ব্যবহার করুন।

    $ name = $ _GET ['ব্যবহারকারীর নাম']; $ পাসওয়ার্ড = $ _GET ['পাসওয়ার্ড']; যদি ($ stmt = $ mysqli-> প্রস্তুতি ("আপডেট tbl_users সেট পাসওয়ার্ড =? যেখানে নাম =?")) {// ভ্যারিয়েবলগুলিকে স্ট্রিং হিসাবে প্যারামিটারে আবদ্ধ করুন। $ stmt-> bind_param ("ss", $ password, $ name); // বিবৃতি কার্যকর করুন। $ stmt-> এক্সিকিউট (); // প্রস্তুত বিবৃতি বন্ধ করুন। $ stmt-> বন্ধ (); }

    দ্রষ্টব্য: $ mysqli ভেরিয়েবল হল mySQLi কানেকশন অবজেক্ট।

    2542820 4
    2542820 4

    ধাপ 4. mySQLi DELETE ক্যোয়ারী তৈরি করুন।

    নীচের স্ক্রিপ্টটি হল কিভাবে মাইএসকিউএলআই প্রস্তুত বিবৃতি ব্যবহার করে একটি টেবিল থেকে ডেটা মুছে ফেলা যায়।

    $ name = $ _GET ['ব্যবহারকারীর নাম']; $ পাসওয়ার্ড = $ _GET ['পাসওয়ার্ড']; যদি ($ stmt = $ mysqli-> প্রস্তুত করুন ("tbl_users থেকে মুছে দিন যেখানে = $ stmt-> bind_param ("s", $ name); // বিবৃতিটি কার্যকর করুন। $ stmt-> এক্সিকিউট (); // প্রস্তুত বিবৃতি বন্ধ করুন। $ stmt-> বন্ধ (); }

প্রস্তাবিত: