- آموزش زمان بندی رویدادها با WP Cron در وردپرس
- مقدمه ای بر توسعه افزونه
- افزونه چیست ؟
- مبانی افزونه
- نیازمندی های هدر
- درج یک مجوز نرم افزار در افزونه
- قلاب های فعال و غیر فعال سازی
- متدهای حذف در سایت های وردپرس
- امنیت افزونه
- بررسی قابلیت های کاربر
- اعتبار سنجی داده ها
- امنیت ورودی
- امنیت خروجی
- Nonce ها
- قلاب ها
- اکشن ها (Actions)
- فیلترها (Filters)
- ایجاد قلاب های سفارشی
- تاپیک های پیشرفته
- منوهای مدیریت
- منوهای سطح بالا
- زیر منوها
- کدهای کوتاه
- مبانی کدهای کوتاه
- کدهای کوتاه جفتی
- کدهای کوتاه پارامتردار
- تنظیمات
- API های تنظیمات
- ایجاد و استفاده از گزینه ها
- گزینه های تکی و آرایه ای
- صفحه تنظیمات سفارشی
- فراداده (Metadata)
- ایجاد و مدیریت فراداده نوشته
- ایجاد متاباکس های سفارشی
- دریافت فراداده
- انواع نوشته سفارشی
- ایجاد پست تایپ سفارشی
- کار با داده های پست تایپ ها
- طبقه بندی یا Taxonomy در وردپرس
- ایجاد و کار با طبقه بندی های سفارشی
- کار با متادیتا (Metadata) کاربران در وردپرس
- ایجاد و مدیریت کاربران در وردپرس
- نقش ها و قابلیت های کاربران در وردپرس
- آموزش استفاده از سرویس HTTP API در وردپرس
- آموزش استفاده از ایجکس (Ajax) در وردپرس
- آموزش استفاده از Transients برای کش کردن در وردپرس
- آموزش WP-Cron وردپرس
- آموزش استفاده از جیکوئری (jQuery) در وردپرس
- آموزش کار با PHP سمت سرور و Enqueue در وردپرس
- قلاب کردن WP-Cron وردپرس به سیستم زمان بندی سرور
همانطور که قبلاً توضیح داده شد ، شما همیشه می خواهید از حملات تزریق کد یا XSS جلوگیری کنید .
برای انجام اینکار نیاز دارید که یک کاربر را شناسایی کنید و از قابلیت ها و دسترسی های نقش کاربری او ، قبل از هرگونه عملیاتی که با بانک اطلاعاتی یا سایر قسمت های وردپرس می تواند داشته باشد ، مطلع باشید .
چنانچه افزونه شما به کاربران اجازه ارسال فرم تنظیمات ، تغییر جزئیات پروفایل کاربران و یا ویرایش داده های نوشته ها (post ها) را می دهد ، باید ابتدا آنها را تایید کند و از سطح دسترسی و قابلیت های عملیاتی آنها برای انجام این عملیات ها مطمئن شود .
خوشبختانه وردپرس ۲ استراتژی تست شده را برای بررسی اینکه آیا کاربر دارای دسترسی کافی برای اعمال برخی کارهای مهم را دارد یا خیر را ارائه داده است :
- قابلیت های کاربر
- Nonce ها
قابلیت های کاربر :
جهت بررسی قابلیت های هر کاربر ، بعد از ورود به وردپرس ، به صورت اتوماتیک ، یک سری قابلیت ها به کاربر اختصاص داده می شود .
به عنوان نمونه ، یک کاربر نویسنده (Author) می تواند نوشته ها را منتشر کند و یک کاربر مدیر (Administrator) می تواند تنظیمات وردپرس را مدیریت کند (قابلیت manage_options )
این قابلیت ها در قسمت مدیریت ، در بخش ها و نقاط خاصی علامت گذاری و مشخص شده اند و بر اساس سطح قابلیت اختصاص داده شده به یک نقش کاربری ، منو ها ، قابلیت ها و سایر جنبه های وردپرس بر اساس کاربر جاری وارد شده به مدیریت ، فعال یا غیر فعال هستند .
شما به عنوان سازنده افزونه ، باید مطمئن شوید که تنها کاربران با نقش ها و قابلیت های مدنظر شما می توانند عملیات های مد نظرتان را اجرا کنند .
در مثال زیر یک تابع مفید را مشاهده می کنید که به کاربران نویسنده امکان حذف نوشته ها را توسط یک لینک در بخش کاربری سایت (Front End) را می دهد :
function wporg_frontend_delete_link() {
$url = add_query_arg(
array(
'action'=>'wporg_frontend_delete',
'post'=>get_the_ID();
),
home_url(),
);
echo "<a href='{$url}'>Delete</a>";
}
اکنون در اینجا یک مثال را می بینید که توسط یک تابع ، چگونگی کنترل درخواست های حذف نوشته ها را نشان می دهد :
if ( isset($_REQUEST['action']) && $_REQUEST['action']=='wporg_frontend_delete' ) {
add_action('init','wporg_frontend_delete_post');
}
function wporg_frontend_delete_post() {
// Get the ID of the post.
$post_id = ( isset( $_REQUEST['post'] ) ? get_post( (int) $_REQUEST['post'] ) : false;
// No post? Oh well..
if ( empty($post_id) )
return;
// Delete post
wp_trash_post( $post_id );
// Redirect to admin page
$redirect = admin_url('edit.php');
wp_safe_redirect( $redirect );
exit;
}
کد بالا به هر بازدیدکننده ای از سایت ، امکان کلیک کردن روی لینک حذف را ، برای حذف یک نوشته می دهد .
هرچند که شما می خواهید تنها کاربران دارای نقش نویسنده و یا بالاتر بتوانند روی لینک حذف کلیک کنند .
اگر هر کسی بتواند به لینک حذف نوشته ها دسترسی داشته باشد ، ممکن است بعد از مدت زمان بسیار کوتاهی ، هیچ نوشته ای در سایت برای نمایش باقی نماند .
بنابراین شما قبل از اجرای هر دستوری باید مطمئن باشید که کاربران معمولی تنها می تواند چند کار معمولی مانند دیدن نوشته ها و کاربران نویسنده و مدیر می توانند یکسری کارهای بیشتر مانند حذف نوشته ها را انجام دهند ( باید سطح دسترسی و قابلیت های هر کاربر را قبل از اجرای دستورات خود در افزونه را چک کنید) .
پس برای ایجاد لینک ، کدی مانند مثال زیر را باید داشته باشید :
function wporg_frontend_delete_link() {
if ( ! current_user_can( 'edit_others_posts' ) )
return;
$url = add_query_arg(
array(
'action'=>'wporg_frontend_delete',
'post'=>get_the_ID();
),
home_url(),
);
echo "<a href='{$url}'>Delete</a>";
}
در هر دو حالت ، کاربر جاری را برای داشتن قابلیت edit_other_post ، قبل از اجرای هر عملیاتی مورد بررسی و تایید قرار می دهیم .
اگر کاربر تایید نشود ، هیچ کاری انجام نمی شود
آیا افزونه شما بعد از بررسی قابلیت ها و نقش کاربران ، برای اجرای هر دستور ، کاملاً امن شده است ؟
نه کاملاً – برای تکمیل امنیت افزونه خود باید بدانید که چگونه Nonce ها را ایجاد کنید .
در بخش های بعدی با Nonce ها آشنا می شوید .






