2011-09-11 30 views
142

क्या वे एक्सएमएल के समान हैं, शायद प्लस स्पेस वन (& ampnbsp;)?HTML पर कौन से पात्रों से बचने की आवश्यकता है?

मुझे HTML से बचने वाले वर्णों की कुछ बड़ी सूचियां मिली हैं, लेकिन मुझे नहीं लगता कि वे से बचें। मैं जानना चाहता हूं कि से बचने के लिए की आवश्यकता है।

& becomes & 
< becomes &lt; 
> becomes &gt; 

विशेषता में आप को महत्व भी उद्धरण कैरेक्टर पलायन करना होगा:

+6

यह प्रश्न [अनुमानतः] गैर-विरोधाभासी सामग्री मानता है। यदि आपको HTML में हमलावर-नियंत्रित सामग्री को सुरक्षित रूप से एम्बेड करने की आवश्यकता है, तो http://wonko.com/post/html-escaping देखें। –

उत्तर

161

अपने दस्तावेज़ यूनिकोड है, तो आप केवल अपने पाठ [spec] [doc] में XML के लिए के रूप में ही लोगों से बचने के लिए की जरूरत है [spec]:

" becomes &quot; 
' becomes &#39; 

अपने दस्तावेज़ ASCII या किसी अन्य गैर यूनिकोड एन्कोडिंग है और आप chara उपयोग कर रहे हैं cters जो समर्थित नहीं हैं, आपको उन्हें बचने की आवश्यकता होगी। अन्यथा, आप ठीक हैं ।

आप आमतौर पर &nbsp; के रूप में रिक्त स्थान से बचना नहीं चाहते हैं। &nbsp; एक सामान्य स्थान नहीं है, यह एक गैर-ब्रेकिंग स्पेस [wiki] है। आप दो शब्दों के बीच डाला जा रहा से एक लाइन ब्रेक को रोकने के लिए सामान्य रिक्त स्थान के बजाय इन का उपयोग कर सकते हैं, या डालने के लिए                     अतिरिक्त                 अंतरिक्ष               इसे स्वचालित रूप से ध्वस्त किए बिना, लेकिन आपको इसे अक्सर करने की आवश्यकता नहीं होगी।


आप के रूप में आप एक <style> या <script> टैग के अंदर (कहीं भाग गया पाठ डालने रहे हैं कि यह समझ में आता है साधारण पाठ सम्मिलित करने के लिए यानी नहीं जब तक ठीक कर रहे हैं, और एक विशेषता मान अंदर नहीं)। अन्यथा आपको daxelrod's answer और described here by the Open Web Application Security Project में उल्लिखित अन्य सावधानी बरतनी चाहिए।

+3

क्या आप संभवतः कथन के लिए कुछ दस्तावेज उद्धृत कर सकते हैं कि यदि दस्तावेज़ यूनिकोड में है तो आपको केवल 5 एक्सएमएल चरित्र इकाइयों से बचने की आवश्यकता है? मुझे और सीखने में दिलचस्पी है। –

+0

@MichaelWaterfall: मुझे विशेष रूप से कहने वाले किसी दस्तावेज़ को नहीं मिला है, लेकिन मैंने HTML विनिर्देश के संदर्भ जोड़े हैं, जहां यह उल्लेख करता है कि कौन से पात्र गुणों और पाठ में बच निकले हैं, और एक फुटनोट को स्पष्ट किया है जिसका अर्थ है "बच निकला पाठ" । एचटीएमएल इकाइयों का उपयोग करने के लिए आपको एकमात्र अन्य कारणों का वर्णन उन पात्रों का प्रतिनिधित्व करना है जिन्हें आप जिस चरित्र सेट का उपयोग कर रहे हैं उसका प्रतिनिधित्व नहीं किया जा सकता है, लेकिन यह यूनिकोड के साथ नहीं हो सकता है। –

+2

चरित्र '>' से बचने की जरूरत नहीं है। चरित्र '' '(क्रमशः ''') को केवल दुर्लभ मामले में भागने की जरूरत है जहां यह एक विशेषता मान के अंदर दिखाई देता है जिसमें उसी चरित्र को डेलीमीटर के रूप में दिखाई देता है। इसके अलावा, HTML वाक्यविन्यास (एक्सएचटीएमएल के विपरीत) में, वर्ण ' 'और' <हमेशा से बचने की ज़रूरत नहीं है, विवरण के लिए चश्मा देखें। –

18

यह संदर्भ पर निर्भर करता है। HTML में कुछ संभव संदर्भों:

  • दस्तावेज़ शरीर
  • सामान्य विशेषताएं अंदर
  • अंदर स्क्रिप्ट टैग
  • स्टाइल टैग के अंदर
  • कई और अधिक!

OWASP के Cross Site Scripting Prevention Cheat Sheet, देखें विशेष रूप से "Why Can't I Just HTML Entity Encode Untrusted Data?" और "XSS Prevention Rules" खंड। हालांकि, पूरे दस्तावेज़ को पढ़ने के लिए सबसे अच्छा है।

3

मूल रूप से वहाँ तीन मुख्य पात्रों जो हमेशा अपने HTML और XML फाइलों में भाग निकले किया जाना चाहिए, ताकि वे, मार्कअप के बाकी के साथ बातचीत नहीं करते हैं तो जैसा कि आप शायद उम्मीद, उनमें से दो वाला synatax हो रैपर, जो < हैं>, वे सूचीबद्ध हैं नीचे के रूप में:

1) &lt; (<) 

2) &gt; (>) 

3) &amp; (&) 

इसके अलावा हम दोहरे-उद्धरण (") " के रूप में और एकल उद्धरण (') & apos

बचें गतिशील डाल के रूप में उपयोग कर सकते हैंमें सामग्रीऔर <style> ये नियम उनके लिए लागू नहीं हैं। उदाहरण के लिए, यदि आप एक में JSON शामिल करने के लिए है, \ x3c साथ < की जगह, U + 2028 \ u2028 साथ चरित्र, और U + 2029 JSON क्रमबद्धता के बाद \ u2029 के साथ)

एचटीएमएल एस्केप वर्ण:। पूरी सूची: http://www.theukwebdesigncompany.com/articles/entity-escape-characters.php

तो तुम जब कुछ भी है कि एक चरित्र संदर्भ शुरू कर सकते थे, जिसके बाद <, या & से बचने के लिए की जरूरत है। साथ ही एम्पर्सेंड पर नियम उद्धृत विशेषताओं के लिए एकमात्र ऐसा नियम है, क्योंकि मिलान उद्धरण चिह्न एकमात्र चीज है जो एक को समाप्त कर देगी। लेकिन अगर आप वहां विशेषता मान को समाप्त नहीं करना चाहते हैं, तो उद्धरण चिह्न से बचें।

को बदलने UTF-8 का मतलब फिर से बचत अपनी फ़ाइल:

वर्ण एन्कोडिंग UTF-8 अपने पृष्ठ के लिए इसका मतलब है कि आप सबसे पलायन के लिए जरूरत से बच सकते हैं और सिर्फ पात्रों के साथ काम का उपयोग करना। नोट, हालांकि, पर आपके दस्तावेज़ के एन्कोडिंग को बदलें, पृष्ठ के शीर्ष पर या सर्वर पर एन्कोडिंग घोषणा केवल बदलने के लिए पर्याप्त नहीं है। आप को उस दस्तावेज़ को अपने एन्कोडिंग में पुन: सहेजने की आवश्यकता है। को समझने में सहायता के लिए अपने आवेदन के साथ ऐसा कैसे करें वेब संलेखन अनुप्रयोगों में एन्कोडिंग सेट करना।

अदृश्य या अस्पष्ट वर्णों: पलायन के लिए

एक विशेष रूप से उपयोगी भूमिका अक्षर हैं जो अदृश्य या प्रस्तुति में अस्पष्ट हैं प्रतिनिधित्व करने के लिए है।

एक उदाहरण यूनिकोड चरित्र यू + 200 एफ दाएं-से-बाएं मार्क होगा। यह चरित्र का उपयोग बिडरेक्शनल टेक्स्ट (जैसे अरबी या हिब्रू स्क्रिप्ट का उपयोग करते समय) में दिशात्मकता को स्पष्ट करने के लिए किया जा सकता है। इसमें कोई ग्राफिक रूप नहीं है, हालांकि, यह देखना मुश्किल है कि ये वर्ण टेक्स्ट में कहां हैं, और यदि वे खो गए हैं या भूल गए हैं तो वे बाद में संपादन के दौरान अप्रत्याशित परिणाम बना सकते हैं। ‏ (या इसके न्यूमेरिक कैरेक्टर संदर्भ समकक्ष और # x200F;) का उपयोग करके इन वर्णों को स्पॉट करना बहुत आसान बनाता है।

एक अस्पष्ट चरित्र का एक उदाहरण U + 00A0 NO-BREAK स्थान है। यह स्थान का प्रकार लाइन ब्रेकिंग को रोकता है, लेकिन यह किसी चरित्र के रूप में उपयोग किए जाने पर किसी अन्य स्थान की तरह दिखता है।   का उपयोग करके यह बनाता है जहां टेक्स्ट में ऐसी जगह दिखाई देती है।

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