मुझे यकीन है कि यह fx किया जा सकता है कर रहा हूँ:
स्वयं को सुरक्षित रखने पर पूरी तरह से संसाधन के लिए यह लिंक देखें। फॉर्म
वास्तव में नहीं। एक्सएसएस मुद्दों को संबोधित करने के लिए इनपुट चरण पूरी तरह गलत जगह है।
यदि उपयोगकर्ता टाइप करते हैं, तो <script>alert(document.cookie)</script>
एक इनपुट में कहें, इसमें स्वयं के साथ कुछ भी गलत नहीं है। मैंने अभी इस संदेश में किया है, और यदि स्टैक ओवरफ्लो ने इसे अनुमति नहीं दी है तो हमें साइट पर जावास्क्रिप्ट के बारे में बात करने में बड़ी कठिनाई होगी! ज्यादातर मामलों में आप किसी इनपुट (*) को अनुमति देना चाहते हैं, ताकि उपयोगकर्ता <
वर्ण का उपयोग शाब्दिक रूप से कम से कम संकेत के लिए कर सकें।
बात यह है कि, जब आप किसी HTML पृष्ठ में कुछ टेक्स्ट लिखते हैं, तो आपको उस संदर्भ के लिए इसे सही ढंग से बचाना होगा। पीएचपी के लिए, कि उत्पादन चरण पर htmlspecialchars()
का उपयोग कर का अर्थ है:
<p> Hello, <?php echo htmlspecialchars($name); ?>! </p>
[पीएचपी संकेत: क्या, अपने आप को छोटे नाम के साथ एक समारोह echo htmlspecialchars
करने के लिए परिभाषित कर सकते हैं के बाद से यह काफी हर करने के लिए टाइपिंग का एक बहुत है समय आप कुछ एचटीएमएल में एक चर डालना चाहते हैं।]
यह आवश्यक है कि टेक्स्ट कहां से आता है, भले ही यह उपयोगकर्ता द्वारा सबमिट किए गए फॉर्म से हो या नहीं। जबकि उपयोगकर्ता द्वारा सबमिट किया गया डेटा आपके एचटीएमएल-एन्कोडिंग को भूलने का सबसे खतरनाक स्थान है, तो बिंदु वास्तव में है कि आप एक प्रारूप (सादा पाठ) में एक स्ट्रिंग ले रहे हैं और इसे किसी अन्य प्रारूप (HTML) में संदर्भ में डालना चाहते हैं।जब भी आप किसी भिन्न संदर्भ में टेक्स्ट फेंकते हैं, तो आपको उस संदर्भ के लिए उपयुक्त एन्कोडिंग/एस्केपिंग योजना की आवश्यकता होगी।
उदाहरण के लिए यदि आप एक जावास्क्रिप्ट स्ट्रिंग शाब्दिक में पाठ डालें, आप उद्धरण कैरेक्टर, बैकस्लैश और नई-पंक्तियों से बचने के लिए होगा। यदि आप किसी URL में क्वेरी घटक में टेक्स्ट डालते हैं, तो आपको अधिकांश गैर-अल्फान्यूमेरिक्स को %xx
अनुक्रमों में परिवर्तित करने की आवश्यकता होगी। प्रत्येक संदर्भ के अपने नियम हैं; आपको यह जानना होगा कि आपकी चुनी भाषा/ढांचे में प्रत्येक संदर्भ के लिए सही कार्य कौन सा है। आप इन चरणों को इनपुट चरण में फॉर्म सबमिशन को मैंगलिंग करके हल नहीं कर सकते हैं-हालांकि कई भद्दा PHP प्रोग्रामर आज़माते हैं, यही कारण है कि इतने सारे ऐप्स कोने के मामलों में आपके इनपुट को गड़बड़ कर देते हैं और अभी भी सुरक्षित नहीं हैं।
(*: ठीक है, लगभग कोई भी। सबमिट किए गए पाठ से ASCII नियंत्रण वर्णों को फ़िल्टर करने के लिए एक उचित तर्क है। यह बहुत ही असंभव है कि उन्हें कोई अच्छा करने की इजाजत है। बेशक आपके पास एप्लिकेशन-विशिष्ट सत्यापन होंगे क्या आप वाकई एक ई-मेल क्षेत्र एक ई-मेल पते की तरह या कि संख्या वास्तव में संख्यात्मक हैं लग रहा है बनाने की तरह है, क्या करना चाहता हूँ। लेकिन यह कुछ सभी इनपुट को कंबल से लागू आप मुसीबत से बाहर निकलना हो सकता है कि नहीं है।)
लक्ष्य फ्रेमवर्क? पीएचपी? – Arthur
किसी भी भाषा/ढांचे/आदि के लिए विकल्प हैं। आपको अधिक विशिष्ट उत्तर मिलेंगे - जैसे htmlencode - यदि आप अपने सेटअप पर अधिक जानकारी प्रदान करते हैं। (ढेर)। – Tobiasopdenbrouw
आप सही, Tobiasopdenbrouw कर रहे हैं, लेकिन यह वास्तव में था और अधिक एक सामान्य प्रश्न की तरह अन्य लोगों को भी :) – Latze