मुझे देखने के लिए सामान्य सुरक्षा दोष क्या हैं? [बन्द है]


16

एक wannabe WP प्लगइन डेवलपर के रूप में, मुख्य सुरक्षा खामियां / छिद्र क्या हैं जिन्हें मुझे देखना चाहिए?

मैं एक कॉन्फ़िगरेशन पैनल (यानी इनपुट फ़ील्ड और सामान) के साथ एक नया प्लगइन बनाने वाला हूं। मुझे किस बारे में चिंतित होना चाहिए?

उदाहरण के लिए, क्या डेटा स्वच्छता इतना बड़ा सौदा है क्योंकि यह / wp-admin / क्षेत्र में है? क्या कोई दुर्भावनापूर्ण सीधे मेरे प्लगइन पेज को हिट कर सकता है और पोस्ट अनुरोध या ऐसा कुछ भेज सकता है?

धन्यवाद!

जवाबों:


16

यहां एक संशोधित चेकलिस्ट है, जो मेरे वर्तमान (कार्य-प्रगति-प्रगति) सेटिंग्स / डेटा सुरक्षा चेकलिस्ट पर आधारित है, जिसका उपयोग थीम्स की समीक्षा के लिए किया जाता है (सिद्धांत थीम के लिए प्लगइन्स के लिए अलग नहीं होने चाहिए)

  1. प्लगइन्स को प्लग-स्लग के साथ सभी विकल्पों, कस्टम फ़ंक्शंस, कस्टम चर, और कस्टम स्थिरांक को उपसर्ग करना चाहिए।

  2. प्लगइन्स को प्लगइन विकल्प और प्लगइन सेटिंग्स पृष्ठों को जानबूझकर लागू करना चाहिए, बजाय वेबसाइट ट्यूटोरियल के कॉपी-एंड-पेस्ट स्क्रिप्ट पर निर्भर होने के बजाय, जैसे कि नीचे वाले, जो पुराने हैं, और उचित डेटा सुरक्षा शामिल नहीं करते हैं:

  3. प्लगइन्स को टॉप-लेवल मेन्यू को जोड़ने के बजाय मेनू add_options_page()में प्लगइन सेटिंग्स पेज को जोड़ने के लिए फ़ंक्शन का उपयोग करना चाहिए ।Settingsadd_menu_page()

  4. सेटिंग्स पेज को जोड़ने की क्षमता के लिए प्लगइन्स को एक उपयुक्त क्षमता (जैसे manage_options) का उपयोग करना चाहिए ।

  5. प्लगइन्स को सेटिंग्स पेज के लिए कई विकल्प बनाने के बजाय एक ही सरणी में विकल्पों को सहेजना चाहिए। सेटिंग्स एपीआई (नीचे देखें) का उपयोग यह संभाल लेगा।

  6. प्लगइन्स को सीधे $_POSTऔर भरोसेमंद डेटा के बजाय फ़ॉर्म इनपुट डेटा प्राप्त करने और सहेजने के लिए सेटिंग्स एपीआई (नीचे देखें) का उपयोग करना चाहिए $_REQUEST

  7. चेक बॉक्स का चयन करें और विकल्पों के लिए, प्लगइन्स का उपयोग करना चाहिए checked()और selected()outputting के लिए काम करता है checked="checked"और selected="selected", क्रमशः।

  8. डेटाबेस में डेटा दर्ज करने से पहले प्लगइन्स को सभी अविश्वासित डेटा को मान्य और अलग करना चाहिए, और सेटिंग्स फॉर्म फ़ील्ड में आउटपुट होने से पहले और थीम टेम्प्लेट फ़ाइलों में आउटपुट होने से पहले सभी अविश्वसनीय डेटा से बचना चाहिए:

  9. प्लगइन्स को esc_attr()टेक्स्ट इनपुट के लिए और esc_html()(या esc_textarea()WP 3.1 में) टेक्सारैस के लिए उपयोग करना चाहिए ।

  10. प्लगइन्स को सेटिंग्स एपीआई का उपयोग नहीं करने पर स्पष्ट रूप से सेटिंग्स-पेज नॉन चेकिंग प्रदान करनी चाहिए:

  11. यह भी अत्यधिक अनुशंसित है कि प्लगइन्स सेटिंग्स एपीआई का उपयोग करते हैं, जो उपयोग करना अधिक आसान है, अधिक सुरक्षित है, और सेटिंग्स पृष्ठों के बहुत से काम का ध्यान रखता है:

सेटिंग्स एपीआई का उपयोग करने पर एक अच्छे ट्यूटोरियल के लिए, देखें:

यदि आप किसी थीम को सुरक्षित और ठोस-कोड वाली थीम सेटिंग पृष्ठ से देखना चाहते हैं, तो इस विषय को देखें:
http://wordpress.org/extend/themes/coraline


और मुझे जोड़ना चाहिए: अगर किसी को सूची से कुछ भी गायब दिखाई देता है, तो कृपया टिप्पणी करें , ताकि मैं इसे चेकलिस्ट में जोड़ सकूं, ताकि थीम्स के लिए सुरक्षा समीक्षा में सुधार हो सके!
चिप बेनेट

वाह, बढ़िया सूची, धन्यवाद। मुझे आश्चर्य है कि अगर इस प्रश्न को एक समुदाय विकि बनाने के लायक है और इनमें से प्रत्येक अंक बेहतर चर्चा और विस्तार की अनुमति देने के लिए अपने स्वयं के उत्तर दे रहा है?
सुनहरीमछली

मैं उस के साथ ठीक हो जाऊंगा, लेकिन मूल पोस्टर के सवाल को हाईजैक नहीं करना चाहता (जब तक कि StExExchange पर चीजें कैसे हों? मैं अभी भी यहाँ नया हूँ ...)।
चिप बेनेट

मुझे या तो पता नहीं ... इसे मध्यस्थों के विवेक पर छोड़ दें, मुझे लगता है। ऐसा लगता है कि यह एक महान विकी प्रश्न बना देगा, क्योंकि इसके महत्वपूर्ण और सर्वोत्तम अभ्यास अभी भी काम कर रहे हैं। @Rarst?
गोल्डनपल्स

मैं एक नया प्रश्न बना सकता हूं, अगर जरूरत हो तो?
चिप बेनेट

11

इसके दो पहलू हैं:

  1. बुनियादी सिद्धांत।

    • डेटाबेस में जो कुछ भी लिखा गया है, उसे SQL इंजेक्शन के लिए जाँचना चाहिए।
    • स्क्रीन पर जो कुछ भी मुद्रित होता है, उसे जांचना चाहिए कि यह हानिकारक जावास्क्रिप्ट प्रिंट नहीं करता है।
    • जब भी कोई कुछ करता है तो यह जाँच की जानी चाहिए कि ऐसा करना उसका उद्देश्य था और उसके पास उपयुक्त क्षमता है।
    • ऐसी कई और बातें हैं जो आप या मैं कभी भी नहीं सोच पाएंगे।
  2. सुनिश्चित वर्णन।

    • आधुनिक वर्डप्रेस सुरक्षा को गंभीरता से लेता है और इसका उद्देश्य डेवलपर्स के लिए इसे आसान बनाना है।
    • तो जिन चीजों को आप करना चाहते हैं, उनमें से अधिकांश के लिए WP APIs के साथ काम करने का एक तरीका है।
    • तो जो कुछ भी आप अपना पहला कदम कर रहे हैं वह ठीक होगा और उचित एपीआई का अध्ययन करें।
    • आगे आप सामान्य और सरल कार्यक्षमता से हैं और अधिक जटिल चीजें जिन्हें आपको अध्ययन करने और कार्यान्वित करने की आवश्यकता होगी।

1
  1. defined('ABSPATH') or die('Access denied');सीधे वर्डप्रेस द्वारा उपयोग किए जाने वाले प्रत्येक प्लगइन की स्क्रिप्ट में जोड़ें
  2. हर निर्देशिका में खाली index.php फ़ाइल जोड़ें
  3. कुछ निर्देशिकाओं की फाइलों तक सीधी पहुँच को रोकने के लिए आवश्यक निर्देश के साथ .htaccess को प्लगइन निर्देशिका में जोड़ें।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.