امنیت خروجی

امنیت خروجی

سایر بخش های سری آموزشی " ایجاد افزونه وردپرس "

در این بخش می خوانیم :

 

فرار (Escaping)

فرار با محلی سازی (Escaping with localization)

فرار با اچ تی ام ال مجاز (Escaping with allowed HTML)

نتیجه گیری

 

 

 

هر وقت که یک داده را از وردپرس برای نمایش در سایت آماده می کنید ،باید آن را توسط فرار یا Escaping آماده سازی کنید .

فرار به معنی جلوگیری از نمایش داده های ناخواسته مانند کدهای HTML ناقص و یا تگ های اسکریپت می باشد که باعث جلوگیری از حمله خطرناک XSS یا تزریق کد به وردپرس می شود .

 

فرار (Escaping)

فرار به امنیت داده های شما قبل از پردازش شدن برای کاربر نهایی سایت کمک می کند .

وردپرس دارای تعداد کمی تابع است ، که شما می توانید در بیشتر موارد از آنها استفاده کنید :

esc_html() : از این تابع هر زمانی که یک عنصر HTML در دو طرف داده قرار دارد استفاده کنید . مانند کد زیر :

<h4><?php echo esc_html( $title ); ?></h4>

 

esc_url() : از این تابع می توانید در همه URL ها ، شامل خاصیت های src و href  استفاده کنید .

<img src="<?php echo esc_url( $great_user_picture_url ); ?>" />

 

esc_js() : از این تابع برای کدهای جاوااسکریپت  درون خطی (inline) استفاده کنید .

<a href="#" onclick="<?php echo esc_js( $custom_js ); ?>">Click me</a>

 

esc_attr() : از این تابع برای هر چیز دیگری بجز موارد بالا که در یک خاصیت از عناصر HTML چاپ می شود ، می توانید استفاده کنید .

<ul class="<?php esc_attr( $list_class ); ?>">

 

نکته : بیشتر توابع وردپرس به صورت پیش فرض ، قبل از ارسال داده ها به خروجی آنها را با این توابع امن می کنند ، بنابراین نایزی نیست که شما دوباره از این توابع برای آنها استفاده کنید . به عنوان مثال شما می توانید با خیال آسوده از تابع the_title()  جهت نمایش عنوان نوشته های وردپرس بدون عمل فرار استفاده کنید .

فرار با محلی سازی (Escaping with localization)

به جای استفاده از تابع echo برای نمایش داده ها در خروجی ، وردپرس یکسری توابع مانند _e() و __() را برای اینکار فراهم کرده است .

در این حالت یکسری توابع اضافی هستند که با توابع محلی سازی ، برای امن کردن داده های خروجی ، ترکیب می شوند .

این توابع را در زیر مشاهده می کنید :

esc_html__()

esc_html_e()

esc_html_x()

esc_attr__()

esc_attr_e()

esc_attr_x()

این توابع با قرار دادن توابع محلی سازی ، در پوشش (داخل) توابع فرار به صورت ساده ، امنیت داده های خروجی وردپرس را تکمیل می کنند .

// Escape and localize
esc_html( _e( 'Hello World', 'text_domain' ) );
 
// This does the same thing
esc_html_e( 'Hello World', 'text_domain' );

 

فرار با اچ تی ام ال مجاز (Escaping with allowed HTML)

در این نوع فرار ، چون داده های شما با هیچ کدام از موارد قبلی مطابقت ندارد و نمی توان از انها استفاده کرد ، از تابع wp_kses()  برای نمایش داده های وردپرس استفاده می شود .

این تابع ، عملیات نمایش امن داده ها را توسط تگ های HTML خاصی که مجاز هستند و از لحاظ امنیت مشکلی ندارند ، انجام می دهد .

همچنین این تابع به شما اطمینان می دهد که عناصر HTML ، خاصیت ها و مقدار خاصیت هایی که در خروجی نمایش داده می شوند ، به موجودیت های نرمال HTML تبدیل شده اند .

تابع wp_kses_post() به روشی متناظر با تابع wp_kses()  داده های خروجی را امن می کند ، با این تفاوت که HTML مجاز قبلاً در هنگام ذخیره محتوای نوشته امن شده است و نیازی به امن کردن دوباره آن نیست .

 

نتیجه گیری

هر زمانی که شما قصد نمایش داده های وردپرس در خروجی را دارید ، مطمئن باشید که آنها را توسط توابع فرار (Escaping Functions)  امن کرده باشید .

امن کردن داده های خروجی توسط فرار (Escaping)  از حملات خطرناکی مانند XSS یا تزریق کد جلوگیری می کند .

۱۳۹۴/۶/۱۶ ۱۰:۰۳:۵۲

درباره نویسنده:

هدف ما در تیم راهنمای وردپرس ارائه خدمات به علاقه مندان در حوزه وب و بخصوص وردپرس و در نهایت ایجاد کسب و کار و به ثمر رسیدن ایده های شما دوستان خلاق میباشد.

نظر شما چیست