कंप्यूटरसॉफ्टवेयर

समारोह में पीएचपी वैश्विक चर। PHP में एक वैश्विक चर बनाओ

एक पूर्ण साइट है, जो व्यापक कार्यक्षमता है आप एक बहुत पता करने की जरूरत बनाने के लिए। लेकिन क्या उसे सही मायने में अनूठा बना सकते हैं - यह PHP है। प्रोग्रामिंग भाषा में वैश्विक चर बहुत बार इस्तेमाल नहीं किया है, लेकिन कभी कभी पता करने के लिए यह कैसे काम करता है, कभी कभी यह आवश्यक है। यही कारण है कि यह क्या है और यह कैसे काम करता है, हम इस लेख में क्या करने जा रहे का अध्ययन है।

क्षेत्र

तो किस संदर्भ में चर और निर्धारित किया है कहते हैं। ज्यादातर मामलों में, वे केवल एक ही गुंजाइश है। (की आवश्यकता होती है) पीएचपी वैश्विक चर अन्य फाइलों से भरी हुई है, तो यह समावेशी (शामिल) और आवश्यक हो सकता है।

डिफ़ॉल्ट रूप से, वे स्थानीय समारोह दायरे तक सीमित हैं। और कैसे अपनी सीमाओं में चर देखा फ़ाइलें बनाने के लिए है, जो अधिक से इस्तेमाल कर सकते हैं? इस उद्देश्य से, और PHP वैश्विक चर में प्रदान की जाती है।

कीवर्ड "वैश्विक"

और यहाँ PHP के लिए एक वैश्विक चर घोषित करने के लिए कैसे है? इस लक्ष्य को प्राप्त में "वैश्विक" में मदद मिलेगी शब्द। यह चर है कि आप एक वैश्विक (narimer, वैश्विक «चर") बनाना चाहते के सामने रखने के लिए आवश्यक है।

इस तरह के एक संकेत के कार्यान्वयन के बाद, डेटा किसी भी फाइल के साथ काम करने में सक्षम हो जाएगा। कहीं इस चर के लिए संदर्भ कर रहे हैं, कार्यक्रम हमेशा वैश्विक संस्करण पर ध्यान देना होगा।

क्यों इस तरह के एक अजीब भाषा? तथ्य यह है एक ही समय में वहाँ स्थानीय संस्करण हो सकता है। लेकिन वे उन फ़ाइलों को जहां की घोषणा के लिए विशेष रूप से उपलब्ध होगी। और यह सब आराम के लिए वैश्विक चर पीएचपी वर्ग में कार्य करेगा। इसलिए आप सावधान रहना चाहिए। वैश्विक एक: और इसमें कोई शक नहीं था, यहाँ क्या वे की तरह लग रही का एक उदाहरण है।

क्योंकि अगर एक फाइल अनेक कारकों के लिए उपयोग होगा, यह उन्हें संघर्ष का कारण होगा। स्थानीय या वैश्विक चर या पढ़ा जाता है पूरी तरह विफल रहता है - लेकिन हम के लिए यकीन है कि यह नहीं कह सकते। तो, अगर यह एक समारोह में रजिस्टर करने के लिए है, यह कोई समस्या नहीं होनी चाहिए। लेकिन अपनी सीमाओं के लिए एक चर के उपयोग समस्याग्रस्त किया जा करने के लिए। इसलिए, कोड बारीकी से निगरानी और सुनिश्चित करने के लिए आवश्यक का मसौदा तैयार की संरचना है कि कहीं भले ही इसमें कहा संघर्ष के लिए एक शर्त पैदा हुई।

रिकॉर्डिंग का एक और अवतार

क्या यह संभव है PHP में किसी अन्य तरीके से एक वैश्विक चर बनाने के लिए? हाँ, नहीं एक भी। सबसे पहले, के $ वैश्विक पर विचार करें। यह एक साहचर्य सरणी है। कुंजी यह करने के लिए - नाम है। सामग्री के मूल्य एक वैश्विक चर के रूप में कार्य करता है। यह ध्यान देने योग्य है कि घोषणा के बाद सरणी किसी भी दायरे में मौजूद है। यह superglobal विश्वास करने का कारण देता है। यह बहुत लग रहा है: $ वैश्विक [ 'चर']।

पूर्वनिर्धारित / superglobals

हर प्रोग्रामिंग भाषा में कुछ ऐसे नाम हैं जो अपने कार्यों से कुछ के लिए किराए पर कर रहे हैं देखते हैं। इसलिए, एक ही नाम से काम नहीं चलेगा की पीएचपी वैश्विक चर में बनाने के लिए।

इस प्रोग्रामिंग भाषा का अपना विशेषताएं हैं। इसलिए, यह महत्वपूर्ण है कि यहाँ पूर्वनिर्धारित वैरिएबल, "सुपर" स्थापित करने के लिए नहीं कर रहे हैं कि, वे सभी स्थानों में उपलब्ध नहीं हैं। मैं इसे कैसे ठीक कर सकते हैं? करने के लिए पूर्वनिर्धारित वैरिएबल कुछ स्थानीय क्षेत्र में उपलब्ध था, यह इस प्रकार है :. वैश्विक «चर घोषित किया जाना चाहिए" यह पहले कहा के रूप में ही हो सकता है, सही लगता है? यह सच है, लेकिन काफी नहीं। हमें पहले से ही एक उदाहरण "लड़" पर नजर डालते हैं:

  • वैश्विक $ HTTP_POST_VARS;
  • गूंज $ HTTP_POST_VARS [ 'नाम']।

आप उन दोनों के बीच अंतर महसूस? ध्यान दें कि पीएचपी वैश्विक चर में जरूरी समारोह के भीतर किया जाना नहीं है। यह भी है कि यह में शामिल है एक फ़ाइल में रखा जा सकता है।

लिंक और सुरक्षा

आप देख सकते हैं, पीएचपी में बनाने के लिए एक वैश्विक चर एक समस्या नहीं है। लेकिन वहाँ किसी विशेष संबंधित लिंक्स है? हाँ, जब वैश्विक का उपयोग कर वहाँ अनपेक्षित व्यवहार हो सकता है। लेकिन उससे पहले, एक छोटे से पृष्ठभूमि की कहानी।

संस्करण 4.2.0 में डिफ़ॉल्ट रजिस्टर_ग्लोबल्स द्वारा निर्देश पर राज्य से दूर करने के लिए बदल दिया है। अधिकांश उपयोगकर्ताओं के लिए, यह बहुत महत्वपूर्ण है, लेकिन व्यर्थ में नहीं है। आखिरकार, यह सीधे विकसित उत्पाद की सुरक्षा को प्रभावित करता है। आप बनाने के लिए की जरूरत है चर वैश्विक, इस पैरामीटर में PHP निर्देश सीधे प्रभावित नहीं है। हालांकि, गलत उपयोग पहले से ही उदाहरण सुरक्षा बना सकते हैं।

तो अगर रजिस्टर_ग्लोबल्स चालू हो, तो पहले लिखा कोड के निष्पादन, विभिन्न चर कि जरूरत है प्रारंभ उदाहरण एचटीएमएल रूपों भेजने के लिए। इसलिए, यह इसे बंद करने का निर्णय लिया गया।

क्यों php वैश्विक चर में इस निर्देश के राज्य ज्यादा बकाया है? तथ्य यह है कि डेवलपर्स के राज्य हमेशा नहीं करते हैं जब निश्चितता के साथ खुद को वह कहाँ से आया के सवाल का जवाब कर सकते हैं। एक तरफ, यह कोड लिखने के लिए आसान है। लेकिन अन्य पर - यह एक सुरक्षा जोखिम है। इसलिए, त्रुटियों, साथ ही डेटा मिश्रण से बचने के लिए और निर्देश निष्क्रिय कर दिया गया।

अब हम नहीं / सुरक्षित कोड, साथ ही कैसे मामलों में जहां वैश्विक पीएचपी चर की घोषणा के डेटा के साथ छेड़छाड़ के प्रयास के साथ है पता लगाने के लिए देखो। इस आदेश में न केवल सुंदर बनाने के लिए आवश्यक है, लेकिन यह भी तेजी से साइटों है कि पहले उपलब्ध व्यक्ति दरार नहीं है काम कर रहे।

दुर्भावनापूर्ण कोड

के सेट है कि चर जो लोग प्राधिकृत किया गया है के लिए सच है करते हैं:

अगर (authenticate_user ()) {
$ अधिकृत सच =;
}

अगर ($ अधिकृत) {
"/highly/sensitive/data.php" में शामिल हैं;
}

इस स्थिति में, चर स्वचालित रूप से सेट किया जा सकता है। यह देखते हुए कि डेटा बस बदला जा सकता है, और उनके मूल के स्रोत सेट नहीं है, तो किसी को भी इस तरह के एक परीक्षा उत्तीर्ण और किसी और होने का नाटक कर सकते हैं। अगर वांछित, हमलावर (या बस उत्सुक लेकिन अनुभवहीन व्यक्ति) प्रभावित हो सकता है, हमारे तर्क।

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

कोड के विश्वसनीय संस्करण

आप बंद कर सकते हैं या निर्देशों काम करते हैं, या इस लक्ष्य को प्राप्त करने के लिए एक अधिक जटिल कोड लिख। उदाहरण के लिए, इस तरह:

अगर (isset ($ _ सत्र [ 'उपयोगकर्ता नाम'])) {

गूंज "नमस्ते {$ _ सत्र [ 'उपयोगकर्ता नाम']} ";

} Else {

गूंज "नमस्ते अतिथि
";
गूंज "में आपका स्वागत है उपयोगकर्ता!";

}

इस मामले में एक प्रतिस्थापन बनाओ, वहाँ कठिन हो जाएगा। लेकिन फिर भी - संभव। ऐसा करने के लिए, आप देखभाल कि तेजी से प्रतिक्रिया उपकरण प्रदान किया गया रखना चाहिए। आप PHP में वैश्विक चर शामिल करना चाहते हैं, तो आपको निम्न उपकरणों का उपयोग कर सकते हैं: अगर हम जानते हैं कि सीमा प्राप्त मूल्य है, यह एक मैच के साथ इस जांच करने के लिए एक स्क्रिप्ट रजिस्टर करने के लिए संभव है। बेशक, यह भी प्रतिस्थापन मूल्यों के खिलाफ पूर्ण सुरक्षा की गारंटी नहीं है। लेकिन उस बहुत ज्यादा विकल्प काफी जटिल है।

छद्मवेष करने का प्रयास ढूँढता

चलो देखते हैं कि कैसे आप पहले लिखा समझते हैं। PHP में समारोह में वैश्विक चर कि नीचे दी जाएगी, आप अपने आप को घोषित करने के लिए की आवश्यकता होगी। हम कह सकते हैं कि इस पाठ विषय का आत्मसात पर होमवर्क का एक प्रकार है। यहाँ कोड है:

अगर (isset ($ _ कुकी [ 'C_COOKIE'])) {
} Elseif (isset ($ _ प्राप्त [ 'C_COOKIE']) || isset ($ _ पोस्ट [ 'C_COOKIE'])) {

मेल ( "administrarot@example.com", "ध्यान दें, स्क्रिप्ट चोरी पर प्रयास और डेटा के साथ छेड़छाड़ दर्ज किया गया था", $ _SERVER [ 'REMOTE_ADDR']);
गूंज "एक टूटी हुई सुरक्षा नहीं थी या ऐसा करने के लिए प्रशासक अधिसूचित प्रयास करते हैं।";
बाहर निकलने के;

} Else {
}
?>

अब स्पष्टीकरण के सिवा। आंशिक रूप से C_COOKIE एक विश्वसनीय स्रोत से हमें आता है। पूरी तरह से अपेक्षित परिणाम के अनुसार संतुष्ट करने के लिए, हम अपने मूल्य की जाँच करें और समस्याओं के मामले में व्यवस्थापक को सूचित। यदि यह नहीं आता है, तो कोई कार्रवाई नहीं की और बनाने के लिए जरूरत नहीं थी। आप समझने के लिए बस रजिस्टर निर्देश अपना कोड सुरक्षित है नहीं है अक्षम करने कि की है। इसलिए, किसी भी चर उस उपयोगकर्ता से स्क्रिप्ट प्राप्त करता है, उम्मीद मूल्य के लिए जाँच की जानी चाहिए।

निष्कर्ष

इधर, सामान्य रूप में, और सब कुछ आप वैश्विक चर सफलतापूर्वक और सुरक्षित रूप से उन्हें अपने काम में उपयोग करने के लिए के बारे में जानना चाहते हैं। बेशक, कहने के लिए एक पूर्ण गारंटी नहीं है कि कोई उन्हें नहीं कर सकते हैं का उपयोग करेगा नहीं है कि - हमलावरों लगातार अपने तरीके और कौशल में सुधार कर रहे हैं। यह कोड में वैश्विक चर का अधिकतम उपयोग को सीमित करने के इसलिए वांछनीय है। सौभाग्य से, यह प्रोग्रामिंग भाषा की संरचना और डिजाइन सुविधाओं इस लक्ष्य को प्राप्त कर सकते हैं। गुड लक!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 hi.delachieve.com. Theme powered by WordPress.