ورود

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : جریان esc_html و esc_attr چیه؟



naghmesra
August 22nd, 2017, 22:42
سلام و درود

میدونم که esc_html رشته رو برای قرارگیری توی بلوک های HTML آماده میکنه و esc_attr هم رشته رو برای قرارگیری توی اتربیوت های HTML آماده میکنه.

ولی خوب رشته رو بدون این دو تابع هم قرار بدی توی HTML اتفاق خاصی نمیوفته و همه چیز درسته.

سوالم اینه که این دو تابع چه موقع هایی کاربرد دارند و باید استفاده بشن؟

تشکر

T.Toosi
August 23rd, 2017, 00:44
سلام escaping برای جلوگیری از نمایش داده های ناخواسته است که باعث جلوگیری از حملات XSS یا تزریق کد های مخرب در دیتابیس می شود، میتوانید خروجی این تابع ها را در سورس صفحه با ورودی ای که با آن دادید مقایسه کنید.

naghmesra
August 23rd, 2017, 01:18
سلام escaping برای جلوگیری از نمایش داده های ناخواسته است که باعث جلوگیری از حملات XSS یا تزریق کد های مخرب در دیتابیس می شود، میتوانید خروجی این تابع ها را در سورس صفحه با ورودی ای که با آن دادید مقایسه کنید.

والا من تست کردم ولی تغییری ندیدم.
شاید متن من کاراکتر های خاصی که این توابع روشون کار میکنند رو ندارن.
مثلا متن که به esc_html میدم یه متن فارسی بدون تگ های HTML هست. روی چنین متنی کار خاصی انجام میده؟

T.Toosi
August 23rd, 2017, 01:25
والا من تست کردم ولی تغییری ندیدم.
شاید متن من کاراکتر های خاصی که این توابع روشون کار میکنند رو ندارن.
مثلا متن که به esc_html میدم یه متن فارسی بدون تگ های HTML هست. روی چنین متنی کار خاصی انجام میده؟

ورودی html بدید :


$attr = '<div class="the" rel="quick" onclick="brown(\'fox\')">jumped over...</div>';
echo esc_html($attr);

خروجی :


&lt;div class=&quot;the&quot; rel=&quot;quick&quot; onclick=&quot;brown(&#039;fox&#039;)&quot;&gt;jumped over...&lt;/div&gt;

naghmesra
August 23rd, 2017, 02:07
ورودی html بدید :


$attr = '<div class="the" rel="quick" onclick="brown(\'fox\')">jumped over...</div>';
echo esc_html($attr);

خروجی :


&lt;div class=&quot;the&quot; rel=&quot;quick&quot; onclick=&quot;brown(&#039;fox&#039;)&quot;&gt;jumped over...&lt;/div&gt;

آهان متوجه شدم.
یعنی خروجی ای که از esc_html بیرون میاد به طور کلی به شکل سورس HTML نمایش داده میشه و اجرا نمیشه؟

T.Toosi
August 23rd, 2017, 13:20
باسلام، همانطور که مشاهده میکنید بعضی از کارکتر ها به کارکتر های Entity تبدیل شدند، حدود 250 کارکتر وجود دارد با تبدیل آن ها در نمایش HTML ما تغییری احساس نمیشود اما باعث جلوگیری از اجرای کد های جاوا اسکریپت یا PHP میشود، که در مثال زیر یک نمونه ساده حمله XSS با تزریق کد جاوا اسکریپت مشاهده میکنید :


https://paste.ofcode.org/5st8xC9gJCEUvEk9Bec8Sa