ওয়ার্ডপ্রেস প্লাগইন এবং থিমগুলির সুরক্ষার সেরা অনুশীলনগুলি কী কী? [বন্ধ]


22

এই প্রশ্নে প্রস্তাবিত হিসাবে , আমি এই বিষয়টিকে নতুন প্রশ্ন হিসাবে যুক্ত করছি, প্লাগিন / থিম সুরক্ষার জন্য সর্বোত্তম অনুশীলনগুলি সম্পর্কে সম্প্রদায় আলোচনা / ভোটদানের জন্য।

থিমগুলি পর্যালোচনা করার জন্য ব্যবহৃত আমার বর্তমান (ওয়ার্ক-ইন-প্রগ্রেস) সেটিংস / ডেটা সুরক্ষা চেকলিস্টের উপর ভিত্তি করে এখানে সূচনা চেকলিস্টটি রয়েছে (থিমগুলির তুলনায় নীতিগুলি প্লাগিনগুলির জন্য আলাদা হওয়া উচিত নয়)।

আপনি যদি কোনও সুরক্ষিত এবং দৃ -়ভাবে কোডেড থিম সেটিংস পৃষ্ঠা সহ কোনও থিমটি দেখতে চান তবে এই থিমটি দেখুন:
http://wordpress.org/extend/themes/coraline


উপযুক্ত সুযোগ সুবিধাগুলি সহ যদি কেউ এটিকে একটি সম্প্রদায় উইকি তৈরি করতে আপত্তি করে না?
চিপ বেনেট

উইকি মোডে একটি প্রশ্ন পেতে একটি মোডকে প্রশ্নটি যথাযথভাবে ট্যাগ করতে হবে , আমি এটি সামান্য দৃষ্টি আকর্ষণ করার জন্য চিহ্নিত করেছি, এটি এখন সময়ের বিষয় মাত্র .. :)
t31os

কোরালাইন সম্পর্কে এত বিশেষ কী? ইমোতে প্রবেশের এখনও অবধি উপায় রয়েছে I'd আমি অনসকে একটি লিখিতভাবে যুক্ত করার পরামর্শ দিই: ওয়ার্ডপ্রেস.স্ট্যাকেক্সেঞ্জিং
কায়সার

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

উত্তর:


13

12

স্যানিটাইজ, বৈধকরণ এবং ডেটা পালাতে escape

(!) ডাটাবেসটি সামনে এবং পিছনের উভয় প্রান্তে প্রবেশ করতে এবং বাইরে আসতে পারে এমন কোনও কিছু সানিটাইজ করুন!

প্লাগইন এবং থিমগুলির যথাযথ ডেটা বৈধকরণ সম্পাদন করা উচিত:

  1. ডাটাবেসে ডেটা প্রবেশের আগে সমস্ত অবিশ্বস্ত ডেটা বৈধকরণ এবং স্যানিটাইজ করুন
  2. Escape সব অনির্ভরযোগ্য তথ্য সেটিং ফর্ম ক্ষেত্রগুলি আউটপুট হওয়ার আগে
  3. Escape সব অনির্ভরযোগ্য তথ্য থিম টেমপ্লেট ফাইল মধ্যে আউটপুট হওয়ার আগে

প্লাগইন এবং থিমগুলি esc_attr()পাঠ্য ইনপুটগুলির জন্য esc_html()বা esc_textarea()পাঠ্য অঞ্চলের জন্য ব্যবহার করা উচিত ।

এছাড়াও থেকে পাওয়া ওয়ার্ডপ্রেস এপিআই esc_url(), esc_url_raw(), esc_js()এবং wp_filter_kses()

খারাপ উদাহরণ:

<?php $url = 'javascript:pwnd()'; ?>
<a href="<?php echo $url; ?>">anchor</a>

ভালো উদাহরণ:

<a href="<?php echo esc_url($url); ?>">anchor</a>

এখানে মার্ক জ্যাকিথের একটি দুর্দান্ত ভিডিও রয়েছে যাতে পলায়নের কাজগুলির ব্যবহার ব্যাখ্যা করা হয়:


3
পথে স্যানিটাইজ করুন,
বেরোনোর

9

কেবলমাত্র $ _GET / $ _POST / _RE _REQUEST সাবধানতার সাথে ব্যবহার করুন এবং যখন আরও ভাল API গুলি অনুপলব্ধ থাকে

প্লাগইন এবং থিমগুলিকে সরাসরি ইনফরমেশন $_POSTএবং $_REQUESTডেটা নির্ভর করার পরিবর্তে ফর্ম ইনপুট ডেটা পেতে এবং সংরক্ষণ করতে সেটিংস এপিআই ব্যবহার করা উচিত ।


3
সর্বদা $ _POST, $ _REQUEST এবং $ _GET অসুরক্ষিত হিসাবে বিবেচনা করুন। এই অ্যারেগুলি থেকে স্যানিটাইজ এবং শ্বেতলিস্ট মানগুলি এবং সেগুলি আপনার নিজের ভেরিয়েবলগুলিতে রাখুন। ব্যবহারকারীর কাছ থেকে আসা মানগুলি কখনই স্যানিটাইজ করবেন না এবং এগুলি আবার $ _POST এ রাখবেন না।
সুবর্ণ অ্যাপলস

2
আপনার ব্যবহার করতে হবে এমন কীটি যথাযথ অ্যারেতে সেট করা আছে তা সর্বদা পরীক্ষা করে দেখুন। isset () আপনার বন্ধু :)
mfields

9

ব্যবহার $wpdb->prepare

সামগ্রীর মাধ্যমে কাস্টম অনুসন্ধানগুলি তৈরি করার সময় $wpdb, সবসময় $wpdb->prepareএসকিউএল কোডের সাথে ডেটা মিশ্রিত ডেটা দিয়ে কোয়েরিগুলি লেখার পরিবর্তে মান সহ স্থানধারককে পূরণ করার জন্য ব্যবহার করুন , কারণ mysql_*পারিবারিক ফাংশনগুলি ভুলভাবে সবাইকে শিখিয়েছে।


$wpdb->prepareহয় না প্রস্তুত বিবৃতিগুলির মতো একই।
hakre

8

দূষিত কোড চালাতে ব্যবহৃত হতে পারে এমন পিএইচপি ফাংশনগুলির সাথে সতর্ক থাকুন

যে কেউ পিএইচপি লেখার জন্য একটি দুর্দান্ত পঠন: স্ট্যাকওভারফ্লোতে এক্সপ্লোরেশনযোগ্য পিএইচপি ফাংশন

থিম সংশোধন API ব্যবহার করুন

থিমগুলি স্ব-উদ্ভাবিত নাম স্কিম নয় বরংset_theme_mod() সম্পর্কিত ফাংশন ব্যবহার করা উচিত । থিম_মোডি এপিআই সেটিংস এপিআইয়ের জন্য একটি বিশেষ স্তর; এটি অনন্য নামের গ্যারান্টি দেয়, সমস্ত বিকল্পকে এক অ্যারেতে ঠেলে দেয় এবং এটি আমার অভিজ্ঞতা থেকে - পরিচালনা করা অনেক সহজ। এছাড়াও, এটি প্লাগইনগুলির জন্য মানক ফিল্টার সরবরাহ করে - যা আন্তঃব্যবহারের জন্য ভাল।

সক্ষম করা এড়িয়ে চলুন register_globals

ভরসা করবেন না register_globals = on। আমার শেষ ক্লায়েন্টটি কিনেছে এমন একটি প্রো থিম ঠিক এটি করে। আমি 5 মিনিটের মধ্যে এই থিমটি ব্যবহার করে যে কোনও সাইট হ্যাক করতে পারি ...
থিমবথম্ব এটিও করেছে (এবং এখনও আছে?)।

অপ্রয়োজনীয় প্রশস্ত অ্যাক্সেস অনুমতি নিয়ে ফাইল তৈরি করবেন না

খুব বেশি অ্যাক্সেস অনুমতি দিয়ে ফাইল তৈরি করবেন না।

যেখানে উপলব্ধ এসএসএল ব্যবহার করুন

আপনার শেয়ারটি টুইটার / ফেসবুক / HTTPS ইউআরআই- তে কিছু লিঙ্ক পাওয়া যায় যদি পাওয়া যায়। আপনার পাঠকের সুরক্ষাও গুরুত্বপূর্ণ।


2
আপনি set_theme_mod()কীভাবে বিশদভাবে বর্ণনা করতে পারেন , বিশেষত, সেটিংস এপিআই ব্যবহারের সাথে এটি কীভাবে সঠিকভাবে যুক্ত করা যায়?
চিপ বেনেট

@ চ্যাপ বেনেট আমি আমার উত্তরে কিছু তথ্য যুক্ত করেছি।
ফুসিয়া

আপনি কি আরও ছোট নির্দিষ্ট উত্তরগুলিতে এই মিনি-তালিকাটি ভেঙে ফেলতে পারেন? ছোট খণ্ডে সম্প্রদায় উইকি পরিচালনা করা সহজ। টিআইএ
রার্স্ট

3
চিপ: থিম মোড সিস্টেমটি সেটিংস এপিআইয়ের সাথে খুব ভাল সংহত করে না। আমি কীভাবে তাড়াতাড়ি তাড়াতাড়ি করা যায় তা ব্যাখ্যা করে একটি পোস্ট লিখব।
অটো

7

একক অ্যারে ডেটা সংরক্ষণ করুন

প্লাগইন এবং থিমগুলির সেটিংস পৃষ্ঠার জন্য একাধিক বিকল্প তৈরি করার পরিবর্তে একক অ্যারেতে বিকল্পগুলি সংরক্ষণ করা উচিত। সেটিংস এপিআই এর ব্যবহার এটি পরিচালনা করবে।


6

সেটিংস পৃষ্ঠাগুলি যুক্ত এবং আউটপুট করার সময় উপযুক্ত দক্ষতার জন্য পরীক্ষা করুন

প্লাগইনগুলিতে সেটিংস পৃষ্ঠা যুক্ত করার সক্ষমতাটির জন্য একটি উপযুক্ত দক্ষতা (উদাহরণস্বরূপ manage_options) ব্যবহার করা উচিত ।

থিমগুলির সেটিংস পৃষ্ঠা যুক্ত করার জন্য edit_theme_optionsউপযুক্ত সক্ষমতা হিসাবে ব্যবহার করা উচিত ।


1
ছোট তবে গুরুত্বপূর্ণ দ্রষ্টব্য: আপনি edit_theme_optionsসেটিংস এপিআই সহ যদিও ব্যবহার করতে পারবেন না , বিকল্প জমা manage_optionsদেওয়ার জন্য আপডেট জমা দেওয়ার জন্য কঠোর কোডেড । সম্পর্কিত ট্র্যাকের টিকিট পাওয়া যাবে এখানে
t31os 21

সত্য, তবে 1) যা কেবল সম্পাদকদের উপর প্রভাব ফেলবে, প্রশাসকদের নয়; এবং 2) আশা করি খুব শীঘ্রই এটিকে সংযুক্ত ট্র্যাকের টিকিটের মাধ্যমে সম্বোধন করা হবে।
চিপ বেনেট

কাস্টম ভূমিকা বা নিয়মিত ভূমিকার জন্য edit_theme_optionsক্যাপটি দেওয়া হওয়ার সম্ভাবনা সবসময়ই থাকে , আমি ভেবেছিলাম যে এটি বর্তমান অবস্থার সেটিংস এপিআই কেবল manage_optionsসক্ষমতার ভূমিকা নিয়েই ব্যবহারযোগ্য ।
t31os

5

আপ টু ডেট টিউটোরিয়াল এবং তথ্য ব্যবহার করুন

প্লাগইনস এবং থিমগুলি উভয়ই বিকল্প এবং সেটিংস পৃষ্ঠাগুলি ইচ্ছাকৃতভাবে প্রয়োগ করা উচিত এবং কপিরাইট-পেস্ট ওয়েবসাইট টিউটোরিয়ালের উপর নির্ভর না করে যা পুরাতন এবং যথাযথ ডেটা সুরক্ষা অন্তর্ভুক্ত করে না যেমন নীচে তালিকাভুক্ত।

কী করবেন না তার উদাহরণ :


1
আমি লিঙ্কগুলি নির্দেশিত করতে একটি সামান্য জোরযুক্ত পাঠ্য যুক্ত করেছি, কী করা উচিত নয় তার উদাহরণ, কারণ তথ্যের মাধ্যমে স্কিম করা সহজ এবং লিঙ্কগুলি তার আগে যে অনুচ্ছেদে না পড়ে তা ক্লিক করুন। আমি সেখানে থাকাকালীন উত্তরটি আরও সুন্দর করেছিলাম ...;)
t31os 21

2
এটি উদাহরণস্বরূপ টিউটোরিয়ালগুলি ভুল এবং / বা পুরাতন উপায়ে ঠিক কী করছে তা ব্যাখ্যার কিছুটা ব্যবহার করতে পারে।
বিরল

4

সেটিংস API ব্যবহার করুন

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

সেটিংস এপিআই ব্যবহার করার জন্য একটি ভাল টিউটোরিয়ালের জন্য, দেখুন:


সেটিংস এপিআই এবং থিম বিকল্পগুলির সাথে এই উত্তরটিতে আমার মন্তব্য দেখুন ।
t31os 21

1

চেকবাক্সগুলি নির্বাচন অপশন জন্য প্লাগইন এবং থিম ব্যবহার করা উচিত checked()এবং selected()outputting জন্য ফাংশন checked="checked"এবং selected="selected"যথাক্রমে।


আসলেই কোনও সুরক্ষার জিনিস নয়, যদি না আমি কিছু মিস করি। এখনও অত্যন্ত সুবিধাজনক এবং ব্যবহার করা ভাল। :)
বিরল

ভাল, সম্ভবত এবং সম্ভবত না। একই জিনিসটি সম্পাদন করার জন্য আমি প্রচুর কাস্টম কোড দেখেছি। সুরক্ষা ঝুঁকি প্রবর্তনের জন্য আরও কোড স্প্যাগেটি = আরও বেশি সুযোগ। :)
চিপ বেনেট

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

2
আমি কৌতুহলী কি আপনাকে বলছি এসেছেন যে সঙ্গে তুলনায় বেশি সহজ checked( $theme_options['whatever_option'] )বা checked( 'some_value' == $theme_options['whatever_option'] )। আমি জানি না কীভাবে এটি এর চেয়ে আরও সুসংহত হয়?
চিপ বেনেট

1

উপসর্গ ফাংশন এবং পরিবর্তনশীল নাম

প্লাগইনগুলিতে প্লাগইন-স্লাগ সহ সমস্ত বিকল্প, কাস্টম ফাংশন, কাস্টম ভেরিয়েবল এবং কাস্টম ধ্রুবকগুলির উপসর্গ করা উচিত।

থিমগুলিকে থিম-স্লাগ সহ সমস্ত বিকল্প, কাস্টম ফাংশন, কাস্টম ভেরিয়েবল এবং কাস্টম ধ্রুবকগুলির উপসর্গ করা উচিত।


আমি এটি সমস্ত শ্রেণীর নাম এবং পোস্ট_ টাইপস এবং ট্যাক্সনোমির মতো কাস্টম অবজেক্টের নামগুলিতে প্রসারিত করব।
এমফিল্ডস

1

একই ডোমেনের কোনও পৃষ্ঠায় সরাসরি নির্দেশ করার সময় পিএইচপি এর শিরোনাম () ফাংশনটি কল করার পরিবর্তে wp_safe_redirect () ব্যবহার করুন ।


0

অ্যাডমিন মেনুর উপযুক্ত বিভাগগুলিতে সেটিংস পৃষ্ঠাগুলি যুক্ত করুন

শীর্ষ স্তরের মেনু যুক্ত করার পরিবর্তে প্লাগইনগুলিতে add_options_page()প্লাগইন সেটিংস পৃষ্ঠাটি Settingsমেনুতে যুক্ত করতে ফাংশনটি ব্যবহার করা উচিত add_menu_page()

শীর্ষ স্তরের মেনু যুক্ত করার পরিবর্তে add_theme_page()থিমগুলিকে থিম সেটিংস পৃষ্ঠাটি Appearanceমেনুতে যুক্ত করতে ফাংশনটি ব্যবহার করা উচিত add_menu_page()

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