পিএইচপি যেভাবে তাদের বিরুদ্ধে সুরক্ষিত বিবৃতি প্রস্তুত করেছিল, নোড.জেএস (সর্বাধিক মডিউল সহ) এসকিউএল ইঞ্জেকশনগুলি প্রতিরোধ করা কি সম্ভব?
যদি তাই হয়, কিভাবে? যদি তা না হয় তবে কয়েকটি উদাহরণ কী যা আমার দেওয়া কোড বাইপাস করতে পারে (নীচে দেখুন)।
কিছু প্রসঙ্গ:
নোড-মাইএসকিএল মডিউলটি ব্যবহার করে নোড.জেএস + মাইএসকিএল সমন্বিত একটি ব্যাক-এন্ড স্ট্যাক সহ আমি একটি ওয়েব অ্যাপ্লিকেশন তৈরি করছি । ব্যবহারের দৃষ্টিকোণ থেকে, মডিউলটি দুর্দান্ত, তবে এটি এখনও পিএইচপি'র প্রস্তুতির বিবৃতিগুলির মতো কিছু বাস্তবায়ন করতে পারেনি (যদিও আমি জানি এটি টোডে রয়েছে )।
আমার বোধগম্যতা থেকে, পিএইচপি'র অন্যান্য বিষয়গুলির পাশাপাশি প্রস্তুত বিবৃতিগুলির প্রয়োগ এসকিউএল ইনজেকশন প্রতিরোধে ব্যাপক সহায়তা করেছিল । আমি উদ্বিগ্ন, যদিও, আমার নোড.জেএস অ্যাপটি একই ধরণের আক্রমণে উন্মুক্ত হতে পারে, এমনকি স্ট্রিংটি ডিফল্টরূপে সরবরাহের পরেও (নীচের কোড স্নিপেটের মতো)।
নোড-মাইএসকিএলটি নোড.জেএস-এর জন্য সর্বাধিক জনপ্রিয় মাইএসকিএল সংযোগকারী হিসাবে মনে হচ্ছে, তাই আমি ভাবছিলাম যে অন্যান্য লোকেরা এই সমস্যাটির জন্য অ্যাকাউন্টিং করতে (যদি কিছু করে) কী করতে পারে - বা এটি যদি নোড.জেএস-এর সাথে শুরু করার মতো সমস্যাও হয় তবে (এটি কীভাবে হবে তা নিশ্চিত নয়, যেহেতু ব্যবহারকারী / ক্লায়েন্ট-সাইড ইনপুট জড়িত)।
আমি কি আপাতত নোড-মাইএসকিএল-নেটিভে স্যুইচ করব , যেহেতু এটি প্রস্তুত বিবৃতি সরবরাহ করে? আমি এটি করতে দ্বিধাগ্রস্থ, কারণ এটি নোড-মাইএসকিএল হিসাবে সক্রিয় বলে মনে হচ্ছে না (যদিও এর অর্থ কেবল এটি সম্পূর্ণ হয়েছে)।
ক্রস সাইট স্ক্রিপ্টিং এবং এসকিএল ইনজেকশন প্রতিরোধ করতে যথাক্রমে নোড-মাইএসকিএল-এর প্রস্তুত বিবৃতি-জাতীয় বাক্য গঠন (যা আমি উপরে বর্ণিত, অক্ষর পলায়ন করে) সহ স্যানিটাইজার মডিউলটি ব্যবহার করে এখানে ব্যবহারকারী রেজিস্ট্রেশন কোডের একটি স্নিপেট রয়েছে :
// Prevent xss
var clean_user = sanitizer.sanitize(username);
// assume password is hashed already
var post = {Username: clean_user, Password: hash};
// This just uses connection.escape() underneath
var query = connection.query('INSERT INTO users SET ?', post,
function(err, results)
{
// Can a Sql injection happen here?
});