विषय फ़ाइलों के प्रत्यक्ष उपयोग को प्रतिबंधित करने के लिए सार्थक?


31

मैंने निम्नलिखित स्निपेट को समय-समय पर थीम में चलाया है:

if ( ! defined('ABSPATH')) exit('restricted access');

यह एक विषय में कुछ (सभी?) PHP फ़ाइलों की शुरुआत में है और यह नापाक स्रोतों द्वारा फ़ाइल की सीधी पहुंच को रोकने के लिए माना जाता है।

मैं देखता हूं कि यह ट्वेंटी टेन या इलेवन में शामिल नहीं है और मैंने इसे कभी भी आधिकारिक वर्डप्रेस प्रलेखन में अनुशंसित नहीं देखा है। यह मुझे एक अच्छा विचार लगता है, लेकिन मैं इसे जज करने के लिए सुरक्षा के बारे में पर्याप्त नहीं जानता और Google के साथ बहुत कुछ नहीं पा सकता।

क्या यह कुछ मेरे कस्टम थीम में होना चाहिए? यदि हां, तो क्या यह सभी PHP फाइलों या कुछ में होना चाहिए?


7
बस बाद के पाठकों के लिए, यह छोटा और अच्छा लिखा जा सकता है:defined('ABSPATH') OR exit;
kaiser

या उससे भी छोटा:: defined('WPINC') ? : die();P
टिम एलास्स

मुझे आश्चर्य है कि अगर यह मेरी त्रुटि लॉग में अपरिभाषित कार्यों के बारे में PHP त्रुटियों को देखने से बचने के लिए इस तरह से कुछ कोड में डालने के लायक है। बॉट्स कभी-कभी इन फाइलों को सीधे हिट करना पसंद करते हैं और मुझे '' अपरिभाषित फंक्शन क्वेरी_पोस्ट्स () 'जैसी गलतियां मिलती हैं क्योंकि WP बूटस्ट्रैप लोड नहीं हुआ है
मैट कीज

जवाबों:


26

आमतौर पर, आपको इसकी आवश्यकता नहीं है। लेकिन ... कम से कम एक किनारे का मामला है:

  • यदि कोई थीम फ़ाइल एक टेम्पलेट भाग है ,
  • और यह कॉलिंग संदर्भ (मूल फ़ाइल) से वैश्विक चर का उपयोग कर रहा है,
  • और register_globals है on,
  • और यह बिना किसी सुरक्षा जांच के केवल इन चरों का उपयोग कर रहा है ...

… एक हमलावर इस फ़ाइल को कॉल कर सकता है, लापता चर को इसके साथ सेट कर सकता है GETया POSTथीम फ़ाइल प्रिंट कर सकता है। और फिर वहाँ है एक सुरक्षा समस्या।

तो ... सबसे अच्छा विकल्प आपके उदाहरण से एक की तरह एक संदर्भ की जाँच नहीं है, लेकिन अच्छा कोड: वैश्विक चर से बचने, इससे पहले कि आप इसे बाहर प्रिंट उनकी सामग्री की जाँच करें।

कुछ मामलों में मैं संदर्भ जांच को जोड़ता हूं जब मुझे लगता है कि कोई और मेरे कोड का उपयोग करेगा और इसे सुरक्षा को ध्यान में रखे बिना बदल देगा। यह चोट नहीं करता है।


यदि एक टेम्पलेट भाग में अभी भी कम से कम एक फ़ंक्शन कॉल होता है जो PHP घातक त्रुटि का कारण होगा तो क्या यह परिदृश्य अभी भी संभव होगा?
क्रिस_ओ 4

@Chris_O उपस्थिति के आदेश पर निर्भर करता है।
FUXIA

समझ में आता है और पूरी तरह से फ़ाइल कॉल के बीच वैश्विक चर का उपयोग न करने के लिए सहमत हैं।
क्रिस_ओ 4

1
सॉरी से सुरक्षित रहना हमेशा सबसे अच्छा होता है। बहुत अधिक सुरक्षा चोट नहीं पहुंचा सकती है, क्या यह हो सकता है?
सीन बर्ग

2
यदि आप सब कुछ ठीक करते हैं, तो आपको उस कोड का उपयोग नहीं करना चाहिए जिसकी आवश्यकता नहीं है। यह प्रश्न इस बात का प्रमाण है कि यह कोड का पालन करना कठिन बनाता है।
FUXIA
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.