2012-09-30 9 views
11

में एचटीएमएल कोड के साथ स्ट्रिंग इंजेक्ट और व्याख्या करने के लिए घटक मैं एक आवेदन बनाने के लिए जेएसएफ 2.0 के साथ प्राइमफेस का उपयोग कर रहा हूं। मैं उपयोगकर्ता को समृद्ध टेक्स्ट बनाने में सक्षम बनाने के लिए प्राइमफ़ेस <p:editor> घटक का उपयोग कर रहा हूं।जेएसएफ पेज

String text = "<p>This text <i>contains</i> some <b>HTML</b> code.</p>"; 

जब मैं एक <h:outputText> के रूप में नीचे में यह दिखाने:: लेकिन इस घटक के उत्पादन HTML स्रोत जो इस तरह दिखना है

<h:outputText value="#{bean.text}" /> 

तो यह सादे पाठ के रूप एचटीएमएल कोड पता चलता है:

< पी > यह पाठ < मैं > < शामिल/मैं > कुछ < ख > एचटीएमएल </बी > कोड। </पी >

क्या कोई घटक है जो HTML स्रोत की व्याख्या कर सकता है ताकि उदा। <i> वास्तव में इटालिक्स और <b> बोल्ड के रूप में दिखाया गया है?

यह पाठ कुछ एचटीएमएल कोड होता है।

उत्तर

21

डिफ़ॉल्ट रूप से जेएसएफ एक्सएसएस हमले छेद को रोकने के लिए बीएम गुणों का समर्थन करने से HTML से बच निकलता है। इसे अक्षम करने के लिए, बस escape<h:outputText> से false की विशेषता सेट करें।

<h:outputText ... escape="false" /> 

इस तरह से HTML से बच नहीं पाएगा और इस प्रकार वेबब्रोसर द्वारा व्याख्या की जाएगी।


असंबंधित ठोस समस्या को, XSS हमलों से सावधान आप यहाँ मूल रूप से उपयोगकर्ता के नियंत्रित इनपुट नहीं छोड़ा जाएगा redisplaying रहे हैं। आप इसे पहले से ही स्वच्छ करना चाहते हैं।