আমি php তে সার্ভার কানেকশন থেকে শুরু করে সব ডাটা হ্যান্ডেল PDO দিয়ে করি । কিন্তু সমস্যা হচ্ছে আমি সব কুয়েরিগুলো আমি সরাসরি $pdo->query($my_query) দিয়ে এক্সিকিউট করে দেই । কোনো $pdo->prepare বা bindParam ব্যাবহার করি না । এক্ষেত্রে আমি জানি যে PDO ব্যাবহার করলে SQL INJECTION দেয়া অসম্ভব । কিন্তু আমি যে উপরোক্ত ফরমাট ফলো না করে সরাসরি query() ব্যাবহার করি , এজন্য কি এটা SQL Injection ঠেকাতে ব্যার্থ হবে ? নাকি কোনো সমস্যা হবে না ।

asked 01 Jul '17, 10:48

shams%20suny's gravatar image

shams suny
936


$pdo->query($my_query)


এখানে যদি $my_query কোন ইউজার ইনপুট নিয়ে কাজ করেন সঠিকভাবে sanitize না করে তবে sql injection সম্ভব। যেমনঃ

"SELECT * FROM test WHERE name = '".$name."' LIMIT 1";

ইউজার যদি এরকম ইনপুট দেই

dummy' OR 1=1 /*

তাহলে শেষ পর্যন্ত query হবে

SELECT * FROM test WHERE name = 'dummy' OR 1=1 /* LIMIT 1

/* এর কারণে লিমিট কমেন্ট হয়ে যাবে এবং query হবে

SELECT * FROM test WHERE name = 'dummy' OR 1=1

test table এর সকল তথ্য নিয়ে আসা যাবে। বিস্তারিত দেখতে পারেনঃ https://stackoverflow.com/questions/134099/are-pdo-prepared-statements-sufficient-to-prevent-sql-injection

permanent link

answered 18 Aug, 17:27

Kaiser%20Ahmed's gravatar image

Kaiser Ahmed
3.2k1622

Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×60
×9
×2

question asked: 01 Jul '17, 10:48

question was seen: 1,377 times

last updated: 18 Aug, 17:27