এসকে_এইচটিএমএল, এসএস_এইটিআর, এসএস_এইচটিএমএল, এবং এর মধ্যে পার্থক্য কী?


13

আমি সুরক্ষা লোকের কাছ থেকে প্রতিক্রিয়া পেয়েছি এবং সে উল্লেখ করেছে যে আমার কোডটিতে ব্যবহারকারীর ইনপুট যথাযথভাবে পালানো উচিত। সুতরাং আমি কিছু গবেষণা করেছি এবং পালানোর কাজগুলি পেয়েছি।

তাদের মধ্যে পার্থক্য কী? আমি কখন esc_html()এবং কখন ব্যবহার করব esc_attr()? এবং _e()শেষের সাথে এই ফাংশনগুলি কখন ব্যবহার করব ?


1
আপনি কি ডকুমেন্টেশন পড়েছেন ?
জ্যাকব পিটিটি

2
হ্যাঁ এবং এটি আমাকে আরও বিভ্রান্ত করেছে :(
বাল্ড্রিক

উত্তর:


21

esc_html()একটি স্ট্রিং এড়িয়ে যায় যাতে এটি HTML হিসাবে পার্স না হয়। উদাহরণস্বরূপ অক্ষর <রূপান্তরিত হয় &lt;। এটি পাঠকের কাছে একইরকম দেখাবে, তবে এর অর্থ হ'ল যদি আউটপুট মানটি হয় <script>তবে এটি ব্রাউজার দ্বারা আসল স্ক্রিপ্ট ট্যাগ হিসাবে ব্যাখ্যা করা হবে না।

যখনই মান হচ্ছে আউটপুটটিতে এইচটিএমএল থাকা উচিত নয় তখন এই ফাংশনটি ব্যবহার করুন।

esc_attr()একটি স্ট্রিং এড়িয়ে যায় যাতে এটি একটি HTML বৈশিষ্ট্যে ব্যবহার করা নিরাপদ, class=""উদাহরণস্বরূপ। এটি এইচটিএমএল বৈশিষ্ট্যটি ভেঙে ফেলার মানকে বাধা দেয়। উদাহরণস্বরূপ, যদি মানটি হয় "><script>alert();</script>এবং আপনি এটি কোনও এইচটিএমএল বৈশিষ্ট্যে আউটপুট দেওয়ার চেষ্টা করেন তবে এটি বর্তমান এইচটিএমএল ট্যাগটি বন্ধ করে একটি স্ক্রিপ্ট ট্যাগ খুলবে। এটি অনিরাপদ। মানটি এড়ানোর মাধ্যমে এটি এইচটিএমএল বৈশিষ্ট্য এবং ট্যাগ এবং আউটপুট অনিরাপদ এইচটিএমএল বন্ধ করতে সক্ষম হবে না।

এইচটিএমএল বৈশিষ্ট্যের ভিতরে কোনও মান আউটপুট করার সময় এই ফাংশনটি ব্যবহার করুন।

esc_url() এটি একটি বৈধ ইউআরএল তা নিশ্চিত করার জন্য একটি স্ট্রিং এড়িয়ে যায়।

কোনও href=""বা গুণকের অভ্যন্তরে কোনও মান আউটপুট করার সময় এই ফাংশনটি ব্যবহার করুন src=""

esc_textarea()এমন কোনও মান থেকে পালিয়ে যায় যাতে এটি কোনও <textarea>উপাদানটিতে ব্যবহার করা নিরাপদ । এই ফাংশনটি সহ কোনও মান এড়ানোর মাধ্যমে <textarea<এটি <textarea>উপাদানটির অভ্যন্তরে আউটপুট হওয়া উপাদানটিকে উপাদানটি বন্ধ করে এবং তার নিজস্ব এইচটিএমএল আউটপুট করে বাধা দেয় ।

কোনও <textarea>উপাদানের অভ্যন্তরে কোনও মান আউটপুট করার সময় এই ফাংশনটি ব্যবহার করুন ।

esc_html()এবং esc_attr()এছাড়াও শেষ হওয়া সংস্করণ __(), _e()এবং _x()। এগুলি অনুবাদযোগ্য স্ট্রিংগুলি আউটপুট দেওয়ার জন্য।

ওয়ার্ডপ্রেস ফাংশন রয়েছে __(), _e()এবং _x()পাঠ্য অনুবাদ করা যায় outputting জন্য। __() ফেরৎ একটি অনুবাদযোগ্য স্ট্রিং, _e() প্রতিধ্বনি একটি অনুবাদযোগ্য স্ট্রিং, এবং _x()একটি প্রদত্ত প্রসঙ্গকে একটি অনুবাদযোগ্য স্ট্রিং ফেরৎ। আপনি সম্ভবত তাদের আগে দেখেছেন।

যেহেতু আপনি সুরক্ষিত মান ধারণ করতে কোনও অনুবাদ ফাইলকে অবিশ্বাস্যভাবে বিশ্বাস করতে পারবেন না, অনুবাদযোগ্য স্ট্রিং আউটপুট করার সময় এই ফাংশনগুলি ব্যবহার করে তা নিশ্চিত করে যে স্ট্রিংগুলি আউটপুট হচ্ছে উপরে বর্ণিত একই সমস্যার কারণ হতে পারে না।

অনুবাদযোগ্য স্ট্রিংগুলি আউটপুট করার সময় এই ফাংশনগুলি ব্যবহার করুন।


2
নোট করুন যে ডিফল্টরূপে esc_htmlএবং এর মধ্যে কোনও তফাত নেই esc_attr, একই কোড ব্যবহার করা হয় (তাদের কেবল আলাদা অব্যবহৃত ফিল্টার রয়েছে): wordpress.stackexchange.com/questions/264698/…
ব্যাপটেক্স

4

esc_htmlএইচটিএমএলের অভ্যন্তরে কোনও <p>ট্যাগের মধ্যে ব্যবহার করা হবে

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

esc_attr এই জাতীয় এইচটিএমএল ট্যাগগুলিতে বিশিষ্ট মানগুলি রক্ষা করার জন্য ব্যবহার করা হবে:

<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, আমি আপডেট করব ... সম্পাদনা ফিক্সড
jrmd
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.