HTML स्ट्रीम के लिए जो कुछ भी डेटा नहीं है, उसे कभी भी आउटपुट न करें htmlspecialchars()
के माध्यम से पारित किया गया है और आप कर रहे हैं। सरल नियम, पालन करने में आसान, किसी भी XSS जोखिम को पूरी तरह मिटा देता है।
एक प्रोग्रामर के रूप में यह आपके नौकरी करने के लिए नौकरी है, हालांकि।
आप
function h(s) { return htmlspecialchars(s); }
परिभाषित कर सकते हैं, तो htmlspecialchars()
भी PHP फ़ाइल प्रति 100 बार लिखने के लिए लंबा है। दूसरी ओर, htmlentities()
का उपयोग करना आवश्यक नहीं है।
मुख्य बिंदु यह है: कोड है, और डेटा है। यदि आप दोनों को इंटरमीक्स करते हैं, तो बुरी चीजें होती हैं।
एचटीएमएल के मामले में, कोड तत्व, गुण नाम, संस्थाएं, टिप्पणियां हैं। डेटा बाकी सब कुछ है। डेटा कोड के लिए गलत होने से बचने के लिए से बचें।
URL की स्थिति में, कोड योजना, होस्ट नाम, पथ, क्वेरी स्ट्रिंग (?
, &
, =
, #
) की व्यवस्था है। डेटा क्वेरी स्ट्रिंग में सबकुछ है: पैरामीटर नाम और मान। कोड के लिए गलत होने से बचने के लिए से बच जाना चाहिए।
यूआरएल एचटीएमएल में एम्बेडेड होना चाहिए दोगुना कोड और डेटा के समुचित जुदाई सुनिश्चित करने के लिए (यूआरएल-भागने और एचटीएमएल-भागने से) भाग निकले।
आधुनिक ब्राउज़र कुछ उपयोगी में अद्भुत टूटे और गलत मार्कअप को पार्स करने में सक्षम हैं। हालांकि, इस क्षमता पर जोर नहीं दिया जाना चाहिए। तथ्य यह है कि काम करने के लिए कुछ होता है (जैसे <a href>
में यूआरएल उचित HTML-escaping लागू किए बिना) इसका मतलब यह नहीं है कि यह करने के लिए यह अच्छा या सही है। एक्सएसएस एक समस्या है जो ए में जड़ें) लोग डेटा/कोड अलगाव (यानी "भागने") से अनजान हैं या जो बेवकूफ हैं और बी) जो लोग डेटा के किस हिस्से से बचने की आवश्यकता नहीं है, उसके बारे में चालाक होने का प्रयास करते हैं।
एक्सएसएस आसानी से बचने के लिए पर्याप्त है यदि आप सुनिश्चित करते हैं कि आप श्रेणियों में नहीं आते हैं) और बी)।
क्या आपका मतलब "सर्वर-साइड स्क्रिप्टिंग" के बजाय "_cross-site_ scripting" था या आप रिमोट कोड का जिक्र कर रहे थे I nclusion/निष्पादन? – janmoesen
क्षमा करें, हाँ मैं – Tim