2011-08-29 2 views
8

क्या यह इस बात पर निर्भर करता है कि इनपुट उपयोगकर्ता को मुद्रित किया जा रहा है या नहीं? मेरे मामले में मुझे इनपुट को वापस उपयोगकर्ता (टिप्पणियां और जैव) वापस करने की आवश्यकता है।क्या मुझे XSS को रोकने के लिए स्ट्रिपटैग() और htmlspecialchars() दोनों का उपयोग करना चाहिए?

धन्यवाद !!!

+0

आपकी मुख्य चिंता उपयोगकर्ता इनपुट को स्वच्छ करना चाहिए, चाहे आप इसके साथ क्या कर रहे हों ... यदि आप किसी भी डेटाबेस क्वेरी में इनपुट का उपयोग कर रहे हैं तो आपको उचित एस्केपिंग एल्गोरिदम के साथ इसे बचाना होगा ... –

उत्तर

18

htmlspecialchars() एक्सएसएस को रोकने के लिए पर्याप्त है।

पट्टी टैग, " या ' तरह टैग नहीं बल्कि विशेष वर्ण निकालता है, इसलिए यदि आप का उपयोग strip_tags() आप भी htmlspecialchars() उपयोग करना होगा।

यदि आप चाहते हैं कि उपयोगकर्ता की टिप्पणियों को प्रदर्शित करने के लिए उन्हें प्रदर्शित किया जाए, तो स्ट्रिप_टैग का उपयोग न करें, केवल HTMLspecialchars() का उपयोग करें।

+0

डाउनवॉटर समझाओ कि उसने क्यों गिरा दिया? – arnaud576875

+1

मैं डाउनवॉटर के लिए बात नहीं कर सकता, लेकिन आपकी आखिरी पंक्ति पूरी तरह गलत है; आपको हमेशा 'htmlspecialchars' का उपयोग करना चाहिए (जब आप ब्राउज़र पर आउटपुट करते हैं ...) ** ** को छोड़कर ** जब आप चाहते हैं कि उपयोगकर्ता कोड निष्पादित करने में सक्षम हों (जैसे जेएसबीएन में) – jeroen

+0

@ जेरोइन आप' htmlspecialchars का उपयोग करें 'में अल्पविराम से चूक गए हैं () केवल, '। इसका मतलब था कि यदि आप चाहते हैं कि आपके उपयोगकर्ता की टिप्पणियां प्रदर्शित हों जैसे कि उन्हें टाइप किया गया है, तो स्ट्रिप_टैग का उपयोग न करें; केवल htmlspecialchars का उपयोग करें। – arnaud576875