db_insert নিরাপদ?


15

আমি ড্রুপাল method টি পদ্ধতি db_insert ব্যবহার করছি , ড্রুপাল ডাটাবেসে একটি কাস্টম টেবিলের মধ্যে ডেটা .োকাতে । আমি পড়েছি যে এটি সবচেয়ে পছন্দসই উপায়, তবে আমি কোড এবং ডকোটি পেরিয়েছি এবং আমি কোথাও দেখতে পাচ্ছি না যা মানগুলি পার্স করে, বা আমাকে বলে যে এই মানগুলি নিরাপদ।

কিছু মান ব্যবহারকারীর কাছ থেকে আসছে তাই এসকিউএল ইঞ্জেকশন আক্রমণগুলির বিরুদ্ধে আমার পরীক্ষা করা দরকার।

এই উদাহরণটি আমি পড়ছিলাম, যেখানে দ্রুপাল 6 মানগুলিকে বিশ্লেষণ করে এবং ড্রুপাল 7 সংস্করণটি দেয় না।

<?php
// Drupal 6 version
db_query('INSERT INTO {vchess_games} 
   (gid, timestamps, white, black, state, board_white, board_black) ' . "VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s')", 
   $gid, $timestamps, $game['white'], $game['black'], $state, $board_white, $board_black);

// Drupal 7 version
db_insert('vchess_games')
  ->fields(array(
    'gid' => $gid,
    'timestamps' => $timestamps,
    'white' => $game['white'],
    'black' => $game['black'],
    'state' => $state,
    'board_white' => $board_white,
    'board_black' => $board_black
  ))
  ->execute();
?>

উত্তর:


13

ড্রুপাল ডাটাবেস স্তর পিডিও এর চারপাশে মোড়ানো এবং প্রস্তুত বিবৃতি ব্যবহার করে, তাই হ্যাঁ, সন্নিবেশ বিবৃতিগুলি এসকিউএল ইঞ্জেকশন আক্রমণ থেকে স্যানিটাইজড এবং সুরক্ষিত করা হয়।

প্রস্তুতিমূলক বিবৃতি ডক্সের এই উদ্ধৃতিটি সেরা বলেছে:

প্রস্তুত বিবৃতিগুলির পরামিতিগুলি উদ্ধৃত করার দরকার নেই; ড্রাইভার স্বয়ংক্রিয়ভাবে এটি পরিচালনা করে। যদি কোনও অ্যাপ্লিকেশন একচেটিয়াভাবে প্রস্তুত বিবৃতি ব্যবহার করে তবে বিকাশকারী নিশ্চিত হতে পারে যে কোনও এসকিউএল ইনজেকশন ঘটবে না (তবে, যদি ক্যোয়ারির অন্যান্য অংশগুলি অনস্কেপড ইনপুট দিয়ে তৈরি করা হয় তবে এসকিউএল ইঞ্জেকশনটি এখনও সম্ভব)।

একই Drupal এর 7 (ডাটাবেস ফাংশন সব জন্য সত্য db_select, db_delete, ইত্যাদি)। কেবলমাত্র সম্ভাব্যরূপে অনিরাপদ এটি হ'ল db_query()যা আপনি এতে যেকোন স্বেচ্ছাসেবী স্ট্রিংটি কার্যকর করবেন। এমনকি db_query(), যদিও আপনি প্যারামিটারগুলিতে পাস করতে পারেন তাই আপনার ক্যোয়ারী নিরাপদ।

ডাটাবেজ বিমূর্ততা স্তর ডক্স আরো কিছু তথ্য আছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.