Esc_html, esc_attr, esc_html_e और इतने पर क्या अंतर है?


13

मुझे सुरक्षा लड़के से प्रतिक्रिया मिली और उन्होंने बताया कि मुझे अपने कोड में उपयोगकर्ता इनपुट से बचने का उचित उपयोग करना चाहिए। इसलिए मैंने कुछ शोध किए हैं और भागने के कार्य किए हैं।

उनमें क्या अंतर है? मुझे कब esc_html()और esc_attr()कैसे उपयोग करना चाहिए ? और मुझे इन कार्यों का उपयोग कब करना चाहिए _e()?



2
हाँ और
इसने

जवाबों:


21

esc_html()एक स्ट्रिंग से बच जाता है ताकि यह HTML के रूप में पार्स न हो। उदाहरण के लिए वर्णों <को रूपांतरित किया जाता है &lt;। यह पाठक के लिए समान होगा, लेकिन इसका मतलब है कि यदि मूल्य आउटपुट है <script>तो इसे ब्राउज़र द्वारा वास्तविक स्क्रिप्ट टैग के रूप में व्याख्या नहीं किया जाएगा।

जब भी आउटपुट में HTML नहीं होना चाहिए, तो इस फ़ंक्शन का उपयोग करें।

esc_attr()एक स्ट्रिंग से बच जाता है ताकि HTML विशेषता में उपयोग करना सुरक्षित हो, class=""उदाहरण के लिए। यह HTML विशेषता से एक मान को टूटने से रोकता है। उदाहरण के लिए, यदि मान है "><script>alert();</script>और आपने इसे HTML विशेषता में आउटपुट करने का प्रयास किया है तो यह वर्तमान HTML टैग को बंद कर देगा और स्क्रिप्ट टैग को खोल देगा। यह असुरक्षित है। मूल्य से बचकर यह HTML विशेषता और टैग और असुरक्षित HTML को बंद करने में सक्षम नहीं होगा।

HTML विशेषता के अंदर एक मान को आउटपुट करते समय इस फ़ंक्शन का उपयोग करें।

esc_url() यह सुनिश्चित करने के लिए एक स्ट्रिंग से बच जाता है कि यह एक मान्य URL है।

किसी फ़ंक्शन href=""या src=""विशेषता के अंदर किसी मान को आउटपुट करते समय इस फ़ंक्शन का उपयोग करें ।

esc_textarea()एक मूल्य से बच जाता है ताकि एक <textarea>तत्व में उपयोग करना सुरक्षित हो । इस फ़ंक्शन के साथ एक मूल्य से बचकर, यह तत्व <textarea<को बंद करने <textarea>और अपने स्वयं के HTML को आउटपुट करने के अंदर एक मूल्य के आउटपुट को रोकता है ।

एक <textarea>तत्व के अंदर एक मूल्य आउटपुट करते समय इस फ़ंक्शन का उपयोग करें ।

esc_html()और esc_attr()इसके संस्करण भी समाप्त हो रहे हैं __(), _e()और _x()। ये ट्रांसलेटेबल स्ट्रिंग्स को आउटपुट करने के लिए हैं।

वर्डप्रेस काम करता है, है __(), _e()और _x()पाठ कि अनुवाद किया जा सकता outputting के लिए,। एक अनुवाद योग्य स्ट्रिंग __() लौटाता है, एक अनुवाद योग्य स्ट्रिंग _e() गूँजता है, और _x()एक दिए गए संदर्भ के साथ एक अनुवाद योग्य स्ट्रिंग देता है। आपने शायद उन्हें पहले देखा है।

चूँकि आप आवश्यक रूप से इन मूल्यों का उपयोग करते हुए अनुवाद फ़ंक्शंस पर भरोसा नहीं कर सकते हैं, इन कार्यों का उपयोग करते समय जब कोई ट्रांसलेटेबल स्ट्रिंग आउटपुट करता है तो यह सुनिश्चित करता है कि आउटपुट होने वाले स्ट्रिंग्स ऊपर वर्णित समान समस्या का कारण नहीं बन सकते।

अनुवाद योग्य तारों को आउटपुट करते समय इन कार्यों का उपयोग करें।


2
ध्यान दें कि डिफ़ॉल्ट रूप से, वहाँ कोई अंतर नहीं है esc_htmlऔर esc_attr:, एक ही कोड प्रयोग किया जाता है (वे सिर्फ एक अलग अप्रयुक्त फिल्टर है) wordpress.stackexchange.com/questions/264698/...
baptx

4

esc_htmlएक <p>टैग के बीच उदाहरण के लिए html के अंदर उपयोग किया जाएगा

<p><?php echo esc_html( $some_variable ); ?></p>

esc_attr HTML टैग पर विशेषता मानों से बचने के लिए उपयोग किया जाएगा:

<p my-attribute="<?php echo esc_attr( $some_variable ); ?>"></p>

अंतिम पर लागू _eकरना इसे पाठ डोमेन के साथ उपयोग करने के लिए है और स्वचालित रूप से आपके लिए इसे प्रतिध्वनित करेगा जैसे:

<p><?php esc_html_e( 'some-text', 'text-domain' ); ?></p>

<p my-attribute="<?php esc_attr_e( 'some-text', 'text-domain' ); ?>"></p>

इसके अलावा _eवहाँ भी है __जो एक ही है, _eलेकिन यह गूंज करता है तो आप इसे एक चर में संग्रहीत कर सकते हैं।


2
_eयह केवल गूँज के लिए नहीं है, यह स्थानीयकरण के लिए है। तो यह केवल तब उपयोग किया जाना चाहिए जब एक स्ट्रिंग फ़ंक्शन में पास हो, और इसमें एक पाठ डोमेन शामिल होना चाहिए। आपका अंतिम उदाहरण इसका दुरुपयोग कर रहा है।
याकूब पीटी

@JacobPeattie मेरा बुरा, मैं अपडेट करूंगा ... EDIT Fixed
jrmd
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.