2012-02-12 11 views
6

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

उत्तर

11

मैं HTMLPurifier का प्रयोग करेंगे, यह सुनिश्चित करें कि आप केवल HTML रखने

  • कि वैध
  • और केवल टैग हैं और विशेषताएँ आप


मैं चाहिए अनुमति देने के लिए चुना गया है जोड़ें कि PHP strip_tags() फ़ंक्शन प्रदान करता है, लेकिन यह अच्छा नहीं है (उद्धरण):

क्योंकि strip_tags() वास्तव में HTML, आंशिक या टूटी हुई टैग को मान्य नहीं करता है जिसके परिणामस्वरूप अधिक टेक्स्ट/डेटा को अपेक्षा से हटाया जा सकता है।

इस समारोह टैग कि आप allowable_tags का उपयोग करने दें, शैली सहित और onmouseover जिम्मेदार बताते हैं जब पाठ पोस्टिंग कि अन्य उपयोगकर्ताओं को दिखाया जाएगा एक शरारती उपयोगकर्ता का दुरुपयोग हो सकता है कि इस पर कोई गुण संशोधित नहीं करता है।

+0

स्ट्रिप_टैग() नोट्स उद्धरण के लिए +1 –

+0

Thx! लगता है कि htmlpurifier जाने का रास्ता है। केवल स्पष्ट करने हेतु; htmlpurifier xss, sql इंजेक्शन और अन्य सभी खतरनाक कोड रोकता है? – Michael

+1

मैंने उपयोगकर्ता-इनपुट को साफ करने के लिए इसे दो बार उपयोग किया है और सुनिश्चित करें कि इसमें केवल टैग शामिल हैं जिन्हें मैंने अनुमति देने के लिए चुना था; यदि आप अनुमत टैग/विशेषताओं को ध्यान से चुनते हैं, तो यह एक्सएसएस को रोक देगा। लेकिन यह एसक्यूएल इंजेक्शन के बारे में कुछ भी नहीं करेगा: ये एक और समस्या है, जो आप यह सुनिश्चित करके हल करेंगे कि आपने SQL क्वेरी में जो रखा है वह सुरक्षित है * (पूर्णांक पूर्णांक होना चाहिए, तारों को ठीक से बचाना चाहिए, या आपको चाहिए तैयार कथन का उपयोग करें) * –

1

यदि आप असली एक्सएसएस सुरक्षा की तलाश में हैं तो मैं HTMLPurifier का उपयोग करने का सुझाव देता हूं। ऐसा करना असंभव नहीं है अगर इसे करना मुश्किल है। और इसमें गलतियों (/ छेद) होने के लिए बाध्य है।

संबंधित मुद्दे