فایل Xmlrpc.php وردپرس و نقش آن

فایل Xmlrpc.php وردپرس و نقش آن

آیا می دانید فایل Xmlrpc.php چیست؟ چرا فایل Xmlrpc.php ایجاد شده است و چگونه از آن استفاده می شود؟ چرا باید Xmlrpc.php را غیرفعال کنید؟ روش های غیرفعال کردن Xmlrpc.php چیست؟ چگونه XML-RPC را بصورت دستی یا با استفاده از افزونه غیرفعال کنیم؟ مزایا و معایب غیرفعال کردن Xmlrpc.php چیست؟ در این مقاله به این سئوالات پاسخ داده می شود و روش های غیر فعال کردن Xmlrpc.php بحث می شود.

فایل Xmlrpc.php وردپرس چیست و چرا باید آن را غیر فعال کرد

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

از قدیم راه حل این مسئله فایلی به نام Xmlrpc.php بود. فایل Xmlrpc.php به ما امکان دسترسی ریموت به ادمین وبسایت وردپرس را می دهد. اما در سالیان اخیر این فایل بیشتر به یک مزاحم تبدیل شده است یا تا یک راه حل.

در ادامه عملکرد فایل در وبسایت وردپرس را بحث کرده و علت ایجاد آن را شرح می دهیم. همچنین مشکلات امنیتی رایج این فایل را بحث کرده، علت و چگونگی رفع این مشکلات در وبسایت وردپرس را معرفی می کنیم.

در این مقاله می خوانیم:

فایل Xmlrpc.php چیست؟

یکی از ویژگی های وردپرس فایل Xmlrpc.php است که امکان انتقال داده را فراهم می سازد که در آن HTTP مکانیسم انتقال داده بوده و XML مکانیسم رمزگذاری داده است. از آنجایی که وردپرس یک سیستم خود محور نیست و گاهی اوقات به برقراری ارتباط با سیستم های دیگر نیاز دارد، این فایل و اسکریپت به عنوان راه حل انجام این وظیفه ایجاد شد.

برای مثال، تصور کنید می خواهید مقاله ای را در سایت خود منتشر کنید و از آنجایی که کامپیوتر در دسترس ندارید می خواهید از گوشی موبایل خود استفاده کنید. بنابراین می توانید از امکانات دسترسی ریموت فراهم شده در فایل Xmlrpc.php استفاده کنید و پست خود را منتشر کنید.

خصیصه های اصلی که فایل Xmlrpc.php فعال می کند شامل اجازه دادن به اتصال به سایت از طریق گوشی هوشمند، اجرای trackbacks و pingbacks از سایت های دیگر، کارکردهای مرتبط با پلاگین Jetpack است.

چرا فایل Xmlrpc.php ایجاد شده است و چگونه از آن استفاده می شود؟

اجرای فایل Xmlrpc.php به روزهای ابتدای معرفی وردپرس بر می گردد، قبل از اینکه به وردپرس امروزی تبدیل شود.

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

راه حال (در آن زمان) ایجاد یک مددجوی وبلاگ نویسی آفلاین بود که در آن می توانستید مطلب و پست خود را نوشته، سپس بلاگ خود را وصل و آنلاین کرده و مطلب را منتشر کرد. این اتصال و آنلاین شدن از طریق Xmlrpc.php انجام می شد. وجود چارچوب Xmlrpc.php به اپلیکیشن های قدیم امکان اتصال همزمان به افرادی که در وبسایت وردپرس خود از وسایل مختلف لاگین کرده بودند، را می داد.

Xmlrpc.php امروزی

سال 2008 و با معرفی وردپرس 2.6 گزینه های جدیدی گذاشته شد که بتوان Xmlrpc.php را غیر فعال کرد. هرچند با معرفی نسخه آیفون اپلیکیشن وردپرس، پشتیبانی Xmlrpc.php بطور پیش فرض فعال شده و گزینه غیرفعال کردن آن از داشبورد وردپرس حذف شد. این مسئله تا به امروز ادامه دارد.

آینده Xmlrpc.php

با معرفی API جدید وردپرس، می توان انتظار داشت که Xmlrpc.php بطور کامل حذف شود. امروزه این API جدید هنوز در مراحل آزمایشی است و می توان آن را فقط از طریق بکارگیری پلاگین فعال کرد.

هرچند می توان انتظار داشت که درآینده API مستقیم در هسته وردپرس کپی شود و نیاز به Xmlrpc.php بطور کلی برطرف شده و این فایل از سیستم مدیریت محتوای وردپرس حذف شود.

این API جدید عالی نیست، اما راه حل قوی تر و ایمن تری برای مشکلاتی فراهم ساخته است که توسط Xmlrpc.php برطرف می شد.

چرا باید Xmlrpc.php را غیرفعال کنید

بزرگترین مشکل Xmlrpc.php ریسک امنیتی است که برای وبسایت به همراه دارد. البته مشکل مستقیما به Xmlrpc.php ربط ندارد بلکه طریقه استفاده از این فایل است که موجب می شود نیروهای مزاحم و مهاجم بتوانند به وبسایت شما حمله کنند.

البته می توان با استفاده از رمزعبور فوق العاده طولانی و قوی یا پلاگین های امنیت وردپرس از سایت خود محافظت کرد. اما بهترین راه محافظت از وبسایت خود همان غیر فعال کرده این فایل است.

فایل Xmlrpc.php دارای دو ضعف اصلی است که در گذشته مورد سوء استفاده قرار گرفته است.

اولی استفاده از حملات نیروهای مزاحم و هکرها برای ورود به سایت شما است. یک حمله کننده که می خواهد به سایت شما دسترسی پیدا کند از Xmlrpc.php با استفاده از ترکیب های نام کاربری و رمز عبور متفاوت بهره می گیرد. یک برنامه نویس یا هکر براحتی می تواند با یک فرمان صدها پسورد مختلف را تست کند. این به آنها امکان رد شدن از ابزارهای امنیتی که عموما حملات ناخواسته به سایت را شناسایی و بلوک می کنند، می دهد.

شیوه دوم آفلاین کردن سایت از طریق حملات DDoS است. هکرها از ویژگی pingback وردپرس استفاده کرده و pingback را همزمان به هزاران سایت ارسال می کنند. این ویژگی Xmlrpc.php برای هکرها مخزن بی پایانی از آدرس های IP را فراهم می سازد تا حملات DDoS خود را از طریق آنها توزیع کنند.

برای چک فعال بودن Xmlrpc.php در سایت خود می توانید از ابزارهای اعتبارسنجی (XML-RPC Validator) استفاده کنید. سایت خود را از داخل این ابزارها باز نموده و اگر پیغام خطا دریافت کنید، بدین معنی است که Xmlrpc.php وبسایت شما فعال نیست.

اگر پیام موفقیت عملیات دریافت کردید بدین معنی است که Xmlrpc.php سایت شما فعال است و می توانید آن را غیر فعال کنید. برای غیرفعال کردن Xmlrpc.php می توانید از افزونه های آماده وردپرس استفاده کنید و یا دستی آن را غیر فعال کنید.

روش 1 – غیرفعال کردن Xmlrpc.php با استفاده از افزونه

غیرفعال کردن Xmlrpc.php در وبسایت خود یک کار ساده است. به سادگی می توانید افزونه های وردپرس را جستجو کرده و افزونه را نصب کنید و سپس با یک کلیک Xmlrpc.php را غیرفعال کنید. همانند تصویر زیر:

غیرفعال کردن دستی Xmlrpc-php بدون افزونه

همینکه افزونه را نصب کرده و فعال کنید، بطور خودکار کد لازم برای غیرفعال شدن Xmlrpc.php را در وردپرس اعمال می کند.

هرچند بایستی بخاطر داشته باشید که بعضی از پلاگین های موجود ممکن است تا حدودی از Xmlrpc.php استفاده کنند، بنابراین غیرفعال کردن آن بطور کامل ممکن است باعث تضاد بین اجزای خاصی از افزونه های سایت شما گردد و این افزونه ها از کار بیافتند.

اگر می خواهید عناصر خاصی از عملکرد Xmlrpc.php را غیر فعال کنید، می توانید افزونه های خاص را نصب و بجای غیرفعال سازی کامل Xmlrpc.php بعضی از خصیصه ها و اجزای آن را غیرفعال کنید. نمونه این افزونه ها عبارتست از:

  • متوقف کردن حمله Xmlrpc.php : افزونه Stop XML-RPC Attack موجب توقف تمامی حملات به Xmlrpc.php می شود اما پلاگین هنوز کار می کند و افزونه هایی مثل جت پک (Jetpack) و ابزارهای و افزونه های خودکار دیگر به فایل Xmlrpc.php دسترسی خواهند داشت.
  • کنترل انتشار Xml-RPC: افزونه Control XML-RPC Publishing کنترل های خاصی از Xmlrpc.php را حفظ کرده و از گزینه های انتشار ریموت ارائه شده توسط Xmlrpc.php استفاده و آنرا کنترل می کند.

روش 2- غیر فعال کردن دستی Xmlrpc.php

اگر نمی خواهید از افزونه های آماده وردپرس استفاده کنید و ترجیح می دهید که دستی Xmlrpc.php را غیرفعال کنید، پس بایستی از این رویکرد استفاده کنید. این روش تمامی درخواست های XML-RPC ورودی را قبل از رسیدن به وبسایت وردپرس شما متوقف می کند.

برای اینکار فایل .htaccess وبسایت خود را باز کنید. ممکن است فایل مخفی باشد و بایستی از مدیر فایل هاستینگ خود یا مددجوی ftp برای یافتن فایل استفاده کنید.

کد زیر را در داخل فایل .htaccess سایت خود تایپ کنید:

# Block WordPress Xmlrpc.php requests
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx

توجه: بایستی بجای xxx.xxx.xxx.xxx آدرس IP مورد نظر خود که می خواهید به Xmlrpc.phpدسترسی داشته باشد را تایپ کنید یا کلا این خط را حذف کنید.

خلاصه بحث

در مجموع Xmlrpc.php راه حل مطلوبی برای مشکلاتی بود که بخاطر انتشار ریموت در سایت وردپرس در گذشته وجود داشت. هرچند این خصیصه یک چاله امنیتی برای حمله به سایت و سوء استفاده از سایت وردپرس است.

برای اطمینان از اینکه سایت شما ایمن بماند بهتر است Xmlrpc.php را بطور کلی غیرفعال کنید. مگر بعضی از کارکردهای آن را برای اقدامات ریموت نیاز داشته باشید. بنابراین بایستی از افزونه ای استفاده کنید که امکان غیرفعال کردن سفارشی بعضی از خصیصه های این برنامه را فراهم سازد.

با گذر زمان خصیصه های مورد انتظار XML-RPC در یک API جدید وردپرس تلفیق کرده اند و دسترسی ریموت به سایت وردپرس امکانپذیر است، بدون اینکه امنیت سایت فدا شود. اما هنوز این برنامه در مرحله آزمایشی است. شما بایستی خودتان از امنیت سایت و غیرفعال کردن چاله های امنیتی XML-RPC اطمینان حاصل کنید.

اگر در اجرای این راهنما به مشکل برخورد کردید و سایر سئوالات و پیشنهادات خود را در بخش سئوالات عمومی انجمن پلکسا مطرح نمایید. گروه توسعه وب پلکسا به سئوالات شما پاسخ خواهند داد.

قابل توجه وبمسترها

وبمستر گرامی

در صورتی که به دنبال جذب بازدید کننده یا ارتقای رنکینگ سایت خود هستید، پیشنهاد می کنیم پلکسا را یک پست یا مطلب مهمان کنید. همانطور که برای سایت خود مطلب می نویسید، مطلب خود را آماده و کد نویسی کرده و در پلکسا منتشر کنید. پلکسا هیچگونه دخل یا تصرفی در پست شما نخواهد داشت.

سئوالات، نظرات، پیشنهادات و مطالب خود را با ما و کاربران پلکسا در میان بگذارید - انجمن پلکسا