मैं PHP इंटरनैशनल पर कुछ समाचार समूह पोस्ट के माध्यम से खुदाई कर रहा हूं और इस विषय के बारे में एक दिलचस्प चर्चा की। प्रारंभिक धागा कुछ और के बारे में था, लेकिन स्टीफन एसेर की एक टिप्पणी, (अगर नहीं तो ) PHP दुनिया में सुरक्षा विशेषज्ञ ने कुछ पदों के लिए $ _REQUEST का उपयोग करने के सुरक्षा निहितार्थ की चर्चा को बदल दिया।
PHP इंटरनैशनल पर स्टीफन एस्सर का हवाला देते हुए
$ _REQUEST PHP में सबसे बड़ी डिज़ाइन कमजोरियों में से एक है। $ _REQUEST का उपयोग करने वाला प्रत्येक एप्लिकेशन संभवतः सबसे अधिक विलंबित क्रॉस साइट अनुरोध फोर्जरी समस्याओं के लिए असुरक्षित है। (यह मूल रूप से इसका मतलब है अगर उदाहरण के लिए एक कुकी नाम (आयु) मौजूद है तो यह हमेशा GET / POST सामग्री को अधिलेखित कर देगा और इसलिए अवांछित अनुरोध किए जाएंगे)
और बाद में उसी धागे के उत्तर में
यह इस तथ्य के बारे में नहीं है कि कोई व्यक्ति जीईटी, पीओटीएस का समर्थन कर सकता है; COOKIE चर। यह इस तथ्य के बारे में है कि COOKIEs REQUEST में GET और POST डेटा को अधिलेखित कर देंगे।
इसलिए मैं आपके ब्राउज़र को कुकी के साथ संक्रमित कर सकता हूं जो कहता है जैसे कि एक्शन = लॉगआउट और उस दिन से आप अब एप्लिकेशन का उपयोग नहीं कर सकते क्योंकि REQUEST [एक्शन] हमेशा के लिए लॉगआउट हो जाएगा (जब तक आप मैन्युअल रूप से कुकी को हटा नहीं देते)।
और एक COOKIE के साथ आपको संक्रमित करने के लिए बहुत सरल है ...
क) मैं एक उप-डोमेन पर किसी भी आवेदन में एक XSS vuln का उपयोग कर सकता था
बी) कभी भी * .co.uk या * .co.kr के लिए एक कुकी सेट करने की कोशिश की जब आप खुद के पास। वहाँ एकल डोमेन?
ग) अन्य क्रॉस डोमेन जो भी तरीके ...
और अगर आपको लगता है कि यह कोई मुद्दा नहीं है, तो मैं आपको बता सकता हूं कि फ़े * .co.kr कुकी को सेट करने की एक सरल संभावना है, जिसके परिणामस्वरूप कई PHP संस्करण बस सफेद पन्नों को वापस करते हैं। कल्पना कीजिए: * .co.kr में सभी PHP पृष्ठों को मारने के लिए सिर्फ एक कुकी
और एक कुकी में एक अवैध सत्र आईडी सेट करके * .co.kr के लिए एक वैरिएबल + PHPSESSID = अवैध में आप अभी भी PHP सत्र का उपयोग कर कोरिया में हर PHP आवेदन डॉस कर सकते हैं ...
चर्चा कुछ और पोस्टिंग के लिए जारी है और पढ़ने के लिए दिलचस्प है।
जैसा कि आप देख सकते हैं, $ _REQUEST के साथ मुख्य समस्या इतनी नहीं है कि इसमें $ _GET और $ _POST से डेटा है, बल्कि $ _COOKIE से भी है। सूची में कुछ अन्य लोगों ने उस आदेश को बदलने का सुझाव दिया जिसमें $ _REQUEST भरा हुआ है, जैसे कि पहले इसे $ _COOKIE से भरना, लेकिन इससे कई अन्य संभावित समस्याएं हो सकती हैं, उदाहरण के लिए सत्र हैंडलिंग ।
आप $ _REQUEST वैश्विक हालांकि से पूरी तरह से न आना $ _COOKIES कर सकते थे, इतना है कि यह अन्य सारणियों के किसी भी (वास्तव में, आप इसे यह मानक सामग्री के किसी भी संयोजन के लिए, की तरह सीमित कर सकते हैं द्वारा ओवरराइट नहीं है पर पीएचपी मैनुअल variable_order आरं सेटिंग हमें बताइये:
वेरिएबल_ऑर्डर ईजीपीसीएस (एनवायरनमेंट, गेट, पोस्ट, कुकी और सर्वर) वेरिएबल पार्सिंग का क्रम सेट करता है। उदाहरण के लिए, यदि वेरिएबल_ऑर्डर "SP" पर सेट है तो PHP सुपरग्लोबल्स $ _SERVER और $ _POST बनाएगी, लेकिन $ _ENV, $ _GET और $ _COOKIE नहीं बनाएगी। "" पर सेट करने का अर्थ है कि कोई सुपरग्लोब सेट नहीं किया जाएगा।
लेकिन फिर, आप $ _REQUEST का उपयोग पूरी तरह से नहीं करने पर भी विचार कर सकते हैं, केवल इसलिए कि PHP में आप अपने स्वयं के ग्लोबल्स में एन्वायरनमेंट, गेट, पोस्ट, कुकी और सर्वर तक पहुंच सकते हैं और एक हमला वेक्टर कम है। आपको अभी भी इस डेटा को साफ करना है, लेकिन इसके बारे में चिंता करना एक कम बात है।
अब आप सोच सकते हैं कि, $ _REQUEST आखिर क्यों मौजूद है और इसे क्यों नहीं हटाया गया। यह PHP इंटरनैशनल पर भी पूछा गया था। रास्मस लेरडोर्फ का हवाला देते हुए $ _REQUEST क्यों मौजूद है? PHP आंतरिक पर
हम जितना अधिक सामान निकालते हैं, यह उतना ही कठिन होता जाता है कि लोग पीएचपी के नए, तेज और अधिक सुरक्षित संस्करणों की ओर तेजी से बढ़ते हैं। यह कुछ "बदसूरत" विरासत सुविधाओं की तुलना में सभी के लिए अधिक निराशा का कारण बनता है। यदि कोई अच्छा तकनीकी कारण, प्रदर्शन या सुरक्षा है, तो हमें इस पर एक सख्त नज़र डालने की आवश्यकता है। इस मामले में, हम जिस चीज को देख रहे हैं वह यह है कि क्या हमें $ _REQUEST को नहीं हटाना चाहिए लेकिन क्या हमें इससे कुकी डेटा को हटा देना चाहिए। कई कॉन्फ़िगरेशन पहले से ही मेरे सभी सहित, और $ _REQUEST में कुकीज़ को शामिल नहीं करने के लिए एक मजबूत वैध सुरक्षा कारण है। अधिकांश लोग GET या POST का अर्थ $ _REQUEST का उपयोग करते हैं, यह महसूस न करने के लिए कि इसमें कुकीज़ भी हो सकती हैं और जैसे कि बुरे लोग संभावित रूप से कुछ कुकी इंजेक्शन चालें कर सकते हैं और भोले अनुप्रयोगों को तोड़ सकते हैं।
वैसे भी, उम्मीद है कि कुछ प्रकाश डाला।