wpdb-> sertোকান: এসকিউএল ইঞ্জেকশনের বিরুদ্ধে আমার কী প্রস্তুতি নেওয়া দরকার?


14

Wpdb-> sertোকানোর আগে আমার কি ডাব্লুপিডিবি প্রস্তুত করা দরকার?

আমি যদি ডাব্লুপিডিবি-> সন্নিবেশ করে ওয়ার্ডপ্রেস টেবিলের মধ্যে মানগুলি প্রবেশ করিয়ে দিচ্ছি তবে আমার ডেটা beforeোকানোর আগে আমার "পরিষ্কার" করা দরকার বা এই পদ্ধতিটি (wpdb-> সন্নিবেশ) আমার জন্য তা করে?

উত্তর:


21

না, আপনি ডেটা প্রস্তুত বা এড়ানো উচিত নয়, এটি wpdbক্লাস দ্বারা আপনার জন্য করা হয় ।

থেকে wpdb বর্গ রেফারেন্স :

তথ্য :

(অ্যারে) সন্নিবেশ করতে ডেটা (কলামে => মান জোড়)। উভয় $ ডেটা কলাম এবং $ ডেটা মানগুলি "কাঁচা" হওয়া উচিত (এসকিউএল এড়ানো উচিত নয়)।

তবে, আপনি যদি insertপদ্ধতিটি ব্যবহার না করে নিজের নিজস্ব এসকিউএল লিখতে থাকেন তবে হ্যাঁ, আপনার ব্যবহার থেকে বাঁচা উচিত prepare


8
একটি নোট যোগ করার জন্য: উভয় insert& updateযে প্রয়োজন হবে না। তবে এটি ব্যবহার করা উচিত query
কায়সার

1

নীচে wpdb বর্গ জন্য একটি সতর্কতা দেওয়া হয়।

https://codex.wordpress.org/Class_Reference/wpdb

একটি সতর্কতা

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

সুতরাং আমি এটিকে পড়লাম - ডাব্লুপিডিবি ক্লাস স্বয়ংক্রিয়ভাবে আপনার জন্য ডেটা প্রস্তুত বা এড়ায় না।

আমি যথেষ্ট নিশ্চিত যে আপনি যদি আপনার কোডের ডেটা উত্সকে 100% বিশ্বাস করতে না পারেন তবে আমি প্রস্তুতি শ্রেণি (?) ব্যবহার করার পরামর্শ দিই।

ভাববেন না যে প্রস্তুতি শ্রেণিটি ব্যবহার করে প্রস্তুতি শ্রেণিটি সঠিকভাবে ব্যবহার না করে এটি ঠিক করে দেবে। আমি এতে মোটামুটি নতুন তাই দয়া করে আমি সঠিক না হলে উত্তর হিসাবে কোনও সংশোধন পোস্ট করুন।

p wpdb-> প্রস্তুত ("আইডি থেকে% টেবিল নির্বাচন করুন =% d এবং নাম =% s", $ আইডি, $ নাম);

উপরের বিবৃতিতে 2 টি অতিরিক্ত গুণ রয়েছে। একটি আইডির জন্য এবং একটি নামের জন্য। যতদূর আমি এটি পড়েছি, প্রতিটি আপনার ক্যোয়ারীতে আইটেমের সংখ্যার সাথে সামঞ্জস্য করে। এছাড়াও% s = স্ট্রিং,% d = পূর্ণসংখ্যা এবং% f = ফ্লোট।

এছাড়াও, আমার পড়া থেকে, যদি আপনি অতিরিক্ত বৈশিষ্ট্যগুলি না রেখে থাকেন তবে প্রস্তুতি আসলে কিছুই করবে না। একটি সতর্কতা থাকবে, তবে আপনি যদি এটিটি বন্ধ করেন তবে সম্ভবত আপনি জানেন না know

এখানে শ্রেণীর রেফারেন্সের একটি উদাহরণ রয়েছে যেখানে তারা নীচে একটি INSERT এ একটি প্রস্তুত শ্রেণি যুক্ত করে।

https://codex.wordpress.org/Class_Reference/wpdb#Protect_Queries_Against_SQL_Injection_Attacks

$ wpdb-> ক্যোয়ারী ($ wpdb-> প্রস্তুত করুন ("INSERT INTO $ wpdb-> postmeta (post_id, meta_key, meta_value) VALUES (% d,% s,% s)", অ্যারে (10, $ metakey, $ metavalue) ));

আমার উদ্বেগটি হ'ল যে upvated উত্তর একই পৃষ্ঠা অনুযায়ী 'কেউ' উল্লেখ না করে ভুল। আমি ধরে নিচ্ছি যে আপনি প্রস্তুত () তবে পালানোর অন্যান্য স্ট্যান্ডার্ড পিএইচপি পদ্ধতি ব্যবহার করেন না কারণ আমি এই উত্তরটি যথাযথভাবে গ্রহণ করেছি ... যতক্ষণ না আমি গভীর গভীরতা খুঁটিয়েছি।

যাইহোক ... সম্ভবত আসল উত্তর থেকে জিনিসগুলি পরিবর্তন হয়েছে।


হুঁ, এটি উত্তরের চেয়ে প্রশ্নের চেয়ে বেশি শোনাচ্ছে
মার্ক কপলুন

গৃহীত উত্তর সঠিক। আপনি যখন ফাংশন ব্যবহার করেন $wpdb->insert(), $ wpdb-> আপডেট () `বা $wpdb->delete()ডেটা RAW হওয়া উচিত। আপনি যেমন ব্যবহার করেন এমন পরিস্থিতিতে $wpdb->query()এবং এসকিউএল স্টেটমেন্টটিকে ইনপুট হিসাবে পাস করুন, আপনার অবিশ্বস্ত ডেটা এড়ানো উচিত।
nmr

এনএমআর, আমার মনে হয় আমি এখন বুঝতে পেরেছি। সুতরাং স্পষ্ট করে বলতে চাই ... আমার বিবেকহীনতার জন্য ... আপনি উদাহরণ হিসাবে যা ব্যবহার করেছেন তা হ'ল 'ক্যোয়ারী পদ্ধতি' ব্যবহার করে যে উদাহরণগুলি ব্যবহার করেছি তার বিপরীতে 'সন্নিবেশ পদ্ধতি এবং' মুছুন পদ্ধতি '... (% wpdb -> ক্যোয়ারী)। আমি কি আমার উত্তর মুছব? নাকি ছেড়ে দেবে?
ফেলিক্সিয়াস

0

আপনি যখন ব্যবহার করবেন তখন এসকিউএল ইঞ্জেকশনগুলির বিরুদ্ধে প্রতিরোধ করার দরকার নেই - wpdb sertোকান বা wpdb মুছুন।এখানে চিত্র বর্ণনা লিখুন

নিম্নলিখিত লিঙ্কগুলি দেখুন:

https://codex.wordpress.org/Data_Validation#Database

https://codex.wordpress.org/Class_Reference/wpdb#Protect_Queries_Against_SQL_Injection_Attacks

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