आगे की व्याख्या जोड़ने के लिए, ब्लेड {{ }}
स्टेटमेंट के अंदर कोड स्वचालित रूप से उस htmlspecialchars()
फ़ंक्शन के माध्यम से पारित किया जाता है जो php प्रदान करता है। यह फ़ंक्शन एक स्ट्रिंग में लेता है और उन सभी आरक्षित वर्णों को खोजेगा जो HTML उपयोग करता है। आरक्षित वर्ण हैं &
<
>
और "
। यह तब इन आरक्षित वर्णों को उनके HTML इकाई संस्करण के साथ बदल देगा। जो निम्नलिखित हैं:
|---------------------|------------------|
| Character | Entity |
|---------------------|------------------|
| & | & |
|---------------------|------------------|
| < | < |
|---------------------|------------------|
| > | > |
|---------------------|------------------|
| " | " |
|---------------------|------------------|
उदाहरण के लिए, मान लें कि हमारे पास निम्नलिखित php स्टेटमेंट है:
$hello = "<b>Hello</b>";
ब्लेड में उत्तीर्ण होने के कारण आपके द्वारा उत्तीर्ण {{ $hello }}
शाब्दिक तार निकलेगा:
<b>Hello</b>
हुड के तहत, यह वास्तव में गूंज होगा <b>Hello<b>
यदि हम इसे बायपास करना चाहते हैं और वास्तव में इसे एक बोल्ड टैग के रूप में प्रस्तुत करते हैं, तो हम htmlspecialchars()
एस्केप सिंटैक्स ब्लेड प्रदान करके फ़ंक्शन से बचते हैं:
{!! $hello !!}
ध्यान दें कि हम केवल एक घुंघराले ब्रेस का उपयोग करते हैं।
उपरोक्त का उत्पादन होगा:
हैलो
हम एक और उपयोगी फ़ंक्शन का भी उपयोग कर सकते हैं जो php प्रदान करता है, जो कि html_entity_decode()
फ़ंक्शन है। यह HTML संस्थाओं को उनके सम्मानित HTML वर्णों में बदल देगा। इसे उल्टा समझोhtmlspecialchars()
उदाहरण के लिए, हमारे पास निम्नलिखित php स्टेटमेंट है:
$hello = "<b> Hello <b>";
अब हम इस समारोह को अपने बच गए ब्लेड स्टेटमेंट में जोड़ सकते हैं:
{!! html_entity_decode($hello) !!}
यह HTML इकाई लेगा <
और इसे HTML कोड के रूप में पार्स करेगा <
, न कि केवल एक स्ट्रिंग के रूप में।
इकाई से अधिक के साथ भी यही लागू होगा >
जो उपज देगा
हैलो
पहली जगह पर भागने का पूरा बिंदु XSS हमलों से बचने के लिए है। एस्केप सिंटैक्स का उपयोग करते समय बहुत सावधानी बरतें, खासकर यदि आपके एप्लिकेशन में उपयोगकर्ता स्वयं ही HTML प्रदान कर रहे हैं, तो वे अपने कोड को अपनी इच्छानुसार इंजेक्ट कर सकते हैं।
{!! nl2br($post->description) !!}
मेरे लिए काम करता है अगर मेरे पास केवल रिक्त स्थान और ब्र है।