آموزش غیر فعال کردن XML-RPC در وردپرس
تا نسخه 3.8 وردپرس XML-RPC به طور پیشفرض بر روی این سیستم مدیریت محتوا غیر فعال بود. بعد از نسخه 3.8 تیم وردپرس با اعلام این موضوع که حالا دیگر به اندازه ی سایر بخش های وردپرس میتوان به این امکان اعتماد کرد و از آنجایی که برای استفاده از اپلیکیشن موبایل وردپرس هم نیاز بود این امکان فعال باشد، به صورت پیشفرض XML-RPC را روی وردپرس فعال کرد. امروز با اینکه حفره ی امنیتی خاصی در رابطه با فایل xml.rpc وجود ندارد ولی این فایل هدف حمله ی بسیاری از افراد خرابکار قرار میگیرد که قصدشان چیزی جز داون کردن سایت شما نیست. بنابراین در آموزش امروز به همراه مسترکد نحوه ی غیر فعال کردن XML-RPC و جلوگیری از دسترسی به آن در وردپرس را خواهیم آموخت. با ما همراه شوید.
XML-RPC چیست؟ چر باید آن را غیر فعال کنیم؟
اگر بخواهیم توضیحات را ساده و کالا قابل درک نگه داریم، XML-RPC به شما اجازه میدهد که از طریق نرم افزار هایی مانند Windows Live Writer به صورت ریموت به سایت خود مطلب ارسال کنید. از طرفی ابزار هایی مثل IFTTT و همچنین اپلیکیشن موبایل وردپرس هم برای برقراری ارتباط با سایت شما از همین روش استفاده میکنند. تا اینجا همه چیز خوب است! مشکل جایی شروع میشود که فایل xmlrpc.php در وردپرس با ارسال درخواست از طریق post مورد حمله ی دیداس (DDOS – Denial of Service Attak ) قرار میگیرد.
متاسفانه طی چند وقت اخیر در سایت های بسیاری شاهد این مطلب بوده ایم و بدیهی است که در عموم موارد اولین پاسخ میزبان شما در قبال چنین حمله ای، مسدود کردن سایت خواهد بود. بنابراین منطق حکم میکند که پیش از اینکه گرفتار چنین حملاتی شوید، اقدامات لازم را جهت پیشگیری به عمل آورید. از طرفی هم اگر از سه امکان ذکر شده در بالا استفاده نمیکنید، اصلا دلیلی ندارد که این روش ارتباطی را بر روی سایت خود باز بگذارید. در ادامه به شرح روش های غیر فعال کردن XML-RPC در وردپرس خواهیم پرداخت.
غیر فعال کردن XML-RPC از طریق وردپرس
روش اول غیر فعال کردن این امکان به این صورت است که میتوانید کد زیر را در فایل function.php یا افزونه site specific خود قرار دهید. طبعا قرار دادن آن در افزونه site specific بیشتر از ویرایش فایل functions.php توصیه میشود :
1 | add_filter('xmlrpc_enabled', '__return_false'); |
اگر هم به انجام دادن همه ی کار ها از طریق افزونه ها، علاقه ی ویژه ای دارید میتوانید بجای انجام روش فوق از افزونه Disable XML-RPC استفاده کنید.
غیر فعال کردن XML-RPC و جلوگیری از دسترسی به فایل xmlrpc.php از طریق htaccess
در روش دوم، عملا به جای غیر فعال کردن کامل XML-RPC، از طریق فایل htaccess، به طور کامل از دسترسی به فایل xmlrpc.php جلوگیری به عمل می آوریم. وقتی کسی نتواند به فایل xmlrpc.php دسترسی پیدا کند، از امکانات XML-RPC هم نمیتواند استفاده یا سوء استفاده کند. مزیت این روش این است که در این حالت میتوانید یک یا چند آی پی خاص را جهت دسترسی به این فایل مجاز کنید. بنابراین عملا میتوانید از سه امکان ذکر شده در بخش قبلی آموزش استفاده کنید و در عین حال از حمله به این فایل هم جلوگیری به عمل آورید. برای پیاده سازی این حالت کافی است کد زیر را در فایل htaccess سایت خود قرار دهید :
1 2 3 4 5 6 | # Prevent Access to xmlrpc.php File <Files xmlrpc.php> order deny,allow deny from all allow from 123.123.123.123 </Files> |
در خط پنجم میتوانید IP ای که مایلید دسترسی آن را به فایل xmlrpc.php مجاز نمایید وارد کنید. بدیهی است در صورتیکه به طور کلی از این امکان استفاده نمیکنید، میتوانید این خط را به طور کامل حذف کنید تا دسترسی به فایل xmlrpc.php برای همه غیر مجاز باشد.
بله … به همین سادگی میتوانید جلوی سوء استفاده از سایت خود را بگیرید. راستی پیش انجام هر یک از مراحل فوق، ایجاد پشتیبان از فایل/سایت فراموش نشود.
با سلام و احترام
با تست و آزمایشی که داشتم متوجه شدم که فعال بودن XML-RPC در ایندکس سریع مطالب در گوگل به شدت تاثیرگذار هست و غیر فعال شدنش با بی نظمی در ایندکس و گاها ایندکس نشدن مطالب همراه است .
چظور میشه دسترسی به این فایل رو فقط به گوگل داد ؟
سلام
تا جایی که من اطلاع دارم (و البته شاید اشتباه کنم ولی به هر حال …) غیر فعال کردن دسترسی به فایل xml-rpc.php در وردپرس مسئله ای جدا از استفاده از XML-RPC برای ایندکس شدن مطالب هست. فایل xml-rpc.php کارش این هست که اجازه میده یک سری ابزارهای 3rd party (مثل اپلیکیشن های موبایل و …) به سایت شما متصل بشن و فرضا اجازه میده که شما از یک اپلیکیشن جداگانه امکان ارسال محتوا به سایتتون رو داشته باشید. اما اگر میخواید از XML-RPC برای پینگ کردن سرویس های بروزرسانی و با خبر کردن اونها از ارسال مطلب جدید استفاده کنید، کافیه در تنظیمات وردپرس به بخش "نوشتن" مراجعه کنید و سرویس های آپدیت دلخواهتون رو در بخش "آگاهی دهندههای بهروز شدن سایت" قرار بدید و به این شکل به ایندکس شدن سریعتر مطالب سایتتون کمک کنید.
ولی به هر حال در همین آموزش این مسئله رو هم ذکر کردیم که چجوری میتونید دسترسی از آی پی های خاصی رو مجاز کنید. برای این کار کافیه خط allow from 123.123.123.123 رو به هر تعداد که مایلید و با هر آی پی که مایل هستید تکرار کنید تا دسترسی از آی پی های مورد نظرتون (حالا در اینجا لیست آی پی های گوگل) مجاز بشه.
اطلاعات بیشتر :
https://stackoverflow.com/questions/10911996/i-want-to-allow-an-ip-range-in-htaccess