- آموزش زمان بندی رویدادها با WP Cron در وردپرس
- مقدمه ای بر توسعه افزونه
- افزونه چیست ؟
- مبانی افزونه
- نیازمندی های هدر
- درج یک مجوز نرم افزار در افزونه
- قلاب های فعال و غیر فعال سازی
- متدهای حذف در سایت های وردپرس
- امنیت افزونه
- بررسی قابلیت های کاربر
- اعتبار سنجی داده ها
- امنیت ورودی
- امنیت خروجی
- Nonce ها
- قلاب ها
- اکشن ها (Actions)
- فیلترها (Filters)
- ایجاد قلاب های سفارشی
- تاپیک های پیشرفته
- منوهای مدیریت
- منوهای سطح بالا
- زیر منوها
- کدهای کوتاه
- مبانی کدهای کوتاه
- کدهای کوتاه جفتی
- کدهای کوتاه پارامتردار
- تنظیمات
- API های تنظیمات
- ایجاد و استفاده از گزینه ها
- گزینه های تکی و آرایه ای
- صفحه تنظیمات سفارشی
- فراداده (Metadata)
- ایجاد و مدیریت فراداده نوشته
- ایجاد متاباکس های سفارشی
- دریافت فراداده
- انواع نوشته سفارشی
- ایجاد پست تایپ سفارشی
- کار با داده های پست تایپ ها
- طبقه بندی یا Taxonomy در وردپرس
- ایجاد و کار با طبقه بندی های سفارشی
- کار با متادیتا (Metadata) کاربران در وردپرس
- ایجاد و مدیریت کاربران در وردپرس
- نقش ها و قابلیت های کاربران در وردپرس
- آموزش استفاده از سرویس HTTP API در وردپرس
- آموزش استفاده از ایجکس (Ajax) در وردپرس
- آموزش استفاده از Transients برای کش کردن در وردپرس
- آموزش WP-Cron وردپرس
- آموزش استفاده از جیکوئری (jQuery) در وردپرس
- آموزش کار با PHP سمت سرور و Enqueue در وردپرس
- قلاب کردن WP-Cron وردپرس به سیستم زمان بندی سرور
در این بخش می خوانید :
اعتبارسنجی
پاک سازی
نتیجه
هر زمانی که داده ای به وردپرس وارد می شود ، چه از طریق فرم ارسال شده و چه از طریق منابع خارجی مانند feed ها، فراخوانی API ها و … ، شما باید جهت تامین امنیت وردپرس ، آنها را اعتبارسنجی کرده و از صحت آنها مطمئن شوید .
اعتبارسنجی :
اعتبارسنجی داده ها یعنی اطمینان از اینکه داده های دریافت شده از طرف کاربر یا سایر منابع خارجی به همان صورتی که مد نظر شماست ، دریافت می شوند .
به عنوان مثال کد زیر را که یک کد پستی را از کاربران دریافت میکند را در نظر بگیرید :
<input id="my-zipcode" type="text" maxlength="5" name="my-zipcode" />
این فیلد متنی به کاربر اجازه می دهد که حداکثر ۵ کاراکتر را ، بدون محدودیت در نوع کاراکترها وارد کند .
کاربران می توانند کاراکترهای مناسبی مانند ۱۱۲۲۱ و یا کاراکترهای نامناسبی مانند Eval( را وارد کنند .
در هنگام پردازش فرم ، کد شما باید هر فیلدی را برای داده آن بررسی کند و هرگونه محتوای غیرمرتبطی را رد کند .
به عنوان مثال می توانید کد پستی (my-zipcodeconsists) را بررسی کنید که فقط ۵ عدد باشد .
// Get only the integer value from my-zipcode
$safe_zipcode = intval( $_POST[fusion_builder_container hundred_percent="yes" overflow="visible"][fusion_builder_row][fusion_builder_column type="1_1" background_position="left top" background_color="" border_size="" border_color="" border_style="solid" spacing="yes" background_image="" background_repeat="no-repeat" padding="" margin_top="0px" margin_bottom="0px" class="" id="" animation_type="" animation_speed="0.3" animation_direction="left" hide_on_mobile="no" center_content="no" min_height="none"]['my-zipcode'] );
if ( ! $safe_zipcode ) {
$safe_zipcode = '';
}
// Get only the first five digits of the ZIP code.
if ( 5 < strlen( $safe_zipcode ) ) {
$safe_zipcode = substr( $safe_zipcode, 0, 5 );
}
// The ZIP code is now safe to save to a post.
update_post_meta( $post->ID, 'my_zipcode', $safe_zipcode );
خاصیت maxlenght در فیلد ورودی ما به مرورگر وابسته است یعنی ممکن است مرورگر به طور کلی آن را به هر دلیلی اجرا نکند ، بنابراین باید این فیلد در سمت سرور نیز توسط پی اچ پی اعتبارسنجی شود .
تابع intval() ورودی کاربر را به یک عدد صحیح (integer) تبدیل می کند و چنانچه داده ورودی کاربر مقدار غیرعددی داشته باشد ، به مقدار صفر تبدیل می شود ، پس شما بر اساس نتیجه این تابع مقدار خالی (empty) یا کدپستی را در بانک اطلاعاتی ذخیره می کنید .
این نوع اعتبارسنجی بسیار شبیه اعتبارسنجی خود وردپرس ( اعتبارسنجی لیست سفید یا Whitelist ) است و به کاربر تنها اجازه ورود داده های مورد نظر را می دهد .
در اینجا یک مثال دیگر بررسی و اعتبارسنجی توسط لیست سفید (Whitelist) وردپرس را مشاهده می کنید .
$allowed_keys = array('author', 'post_author', 'date', 'post_date');
$orderby = sanitize_key( $_POST['orderby'] );
if ( in_array( $orderby, $allowed_keys, true ) ) {
// modify the query to sort by the orderby key
}
پاکسازی (Sanitizing)
پاکسازی یک روش بسیار کارآمد برای تمیزکردنداده های کاربر از هرگونه کاراکتر یا محتوای نامناسب می باشد .
این روش بهترین شیوه برای دریافت و قبول کردن یک محدوده از داده های ورودی می باشد .
به عنوان مثال ، یک فیلد ورودی که از کاربر عنوان نوشته را میگیرد ، در نظر بگیرید :
<input id="title" type="text" name="title" />
شما می توانید این فیلد ورودی را با تابع sanitize_text_field() پاکسازی کنید تا هیچ خطر امنیتی برای وردپرس رخ ندهد .
$title = sanitize_text_field( $_POST['title'] ); update_post_meta( $post->ID, 'title', $title );
در پشت صحنه تابع sanitize_text_field() چندین کار مانند بررسی مقدار فیلد برای متناسب بودن با UTF-8 یا تبدیل کاراکترهای خاص به معادل آنها در HTML و … را انجام می دهد .
البته این تابع کارهای بیشتری را انجم می دهد ولی جهت کوتاه کردن بحث از ذکر همه آنها خودداری می کنیم .
توسط کلاس های sanitize_*() می توانید از دریافت داده ها به صورت امن مطمئن شوید و همچنین تا حد بسیار زیادی در کدنویسی و زمان خود صرفه جویی کنید .
در زیر چند نمونه از این کلاس ها را مشاهده می کنید :
نتیجه
هر زمانی که شما یک داده غیر امن را دریافت می کنید ، باید توسط اعتبارسنجی و پاکسازی آن را برای وردپرس امن کنید . اعتبارسنجی یعنی اینکه تایید کنید داده ورودی چیزی است که شما می خواهید و پاکسازی یعنی ایمن سازی داده ورودی از هر لحاظ تا برای وردپرس خطر امنیتی نداشته باشد .[/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]






