XML-RPC چیست ؟
از اوایلی که وردپرس متولد شد، قابلیتی داشت که سایت های وردپرسی را به یکدیگر متصل می کرد و سبب میشد که شما بتوانید از راه دور با سایت خود ارتباط برقرار کنید. که در مرکز تمام این قابلیت ها XML-RPC وجود داشت. یک پروتکل که توسط آن دیگر برنامه های کاربردی چه روی یک رایانه شخصی و چه روی گوشی هوشمند می توانستند با سایت وردپرس ارتباط برقرار کنند.
XML-RPC یا XML Remote Procedure Call این چند تا قدرت را برای وردپرس به همراه آورد:
- امکان اتصال به سایت توسط گوشی های هوشمند
- دریافت بازتاب (Trackbacks و pingbacks) زمانی که یک سایت دیگر به نوشته ای از سایت شما اشاره کرده باشد.
- و جت پک (Jetpack) وردپرس
تمامی این قابلیت ها با XML-RPC کار می کند. اما مشکلات امنیتی هم در کنار این پروتکل وجود دارد که توجه ما را به خود جلب خواهد کرد.
XML-RPC چیست و به چه منظوری از آن استفاده می شود؟
برگردیم که دنیای خیلی دور وبلاگ نویسی، زمانی که حتی وردپرس هم وجود نداشت. وبلاگ نویس ها در یک سند متنی شروع به نوشتن متن خود می کردند و از عملیات کپی و چسباندن برای انتقال نوشتۀ خود به وبلاگ استفاده میکردند. این کار مشکلاتی داشت. از جمله اینکه به همراه متن نوشته شده، نویسه های مخفی زیادی هم به وبلاگ منتقل می شد. حتی زمانی که به صورت یک سند HTML خروجی گرفته می شد.
وبلاگ نویس ها یک API یا رابط برنامه نویسی نرم افزار ساختند که این امکان را به دیگر توسعه دهندگان می داد تا به وبلاگ دسترسی داشته باشند. حالا می شد درون یک نرم افزار روی رایانه شخصی به صورت آفلاین نوشته خود را نوشت، سپس به اینترنت متصل شد و با همان API نوشته را به وبلاگ منتقل کرد. دیگر سیستم های وبلاگ نویسی هم به سمت چنین پروتکلی حرکت کردند و این شد که استاندارد MetaWeblogAPI به وجود آمد.
این شد که یک دهه از آن قضه گذشت و وبلاگ نویس ها ترجیح می دهند که از گوشی هوشمند و برنامه کاربردی روی آن به جای رایانه شخصی برای وبلاگ نویسی استفاده کنند. در سال ۲۰۰۸ و ۲۰۰۹ هم وردپرس هم لطف بزرگی کرد و برای بیشتر گوشی های همراه، حتی بلکبری و وبندوز موبایل هم برنامه کاربری اش را توزیع کرد.
این برنامه ها به واسطۀ رابط XML-RPC این اجازه را می دادند که با نام کاربری و رمز عبور wordpress.com بتوان وارد حساب شد و هر سایت یا وبلاگی که این دسترسی داده شده را دیده و ویرایش کنیم. در این روش اگر شما به عنوان مدیر سایت خواسته باشید شخص یا سرویس دیگری موقتاً به قسمت یا کل سایت شما دسترسی داشته باشد، کاری به جز دادن رمز عبور کل سایت ندارید! یکی از مشکلات امنیتی که XML-RPC به همراه دارد.
XML-RPC باید باشد یا باید حذف شود؟
از روزهای اول وردپرس از XML-RPC پشتیبانی می کرد. حتی قبل از آن این پروتکل روی پلتفرم b2 که وردپرس از آن مشتق شده است هم وجود داشت. در نسخه ۲٫۶ وردپرس فعال کردن XML-RPC به قسمت تنظیمات نوشتن پیشخوان افزوده شد که مقدار پیش فرض آن OFF یعنی غیر فعال بود. یک هفته پس از آن نسخه آیفون وردپرس آمد.
حدودد ۴ سال بعد، در نسخه ۳٫۵ وردپرس قابلیت XML-RPCبه صورت پیش فرض فعال بود و امکان غیر فعال کردن آن از بخش تنظیمات برداشته شد و تا امروز همین روال ادامه دارد. یعنی روی هر سایت وردپرس XML-RPC فعال است. مگر اینکه با استفاده از هک وردپرس و افزونه این امکان را غیر فعال کنیم.
مهم ترین ضعف های مرتبط با XML-RPC عبارتند از:
- حمله Brute force : هکر می تواند توسط xmlrpc.php و تست کردن تعداد زیادی رمز عبور و نام کاربری در کمترین زمان این چنین حمله ای را ترتیب دهد. این فایل در وردپرس امکان استفاده از یک خط دستور برای حدس زدن صدها رمز عبور را می دهد. که اگر کاربر سایت از رمزهای عبور ساده استفاده کرده باشد، هک شدن سایت حتمی است.
- حمله Denial of Service یا رد سرویس با Pingback : یکی دیگر از روش های حمله توسط XML-RPC حمله ای با عنوان رد سرویس است. در این نوع حمله تعداد بسیار زیادی درخواست Pingback به سایت ارسال می شود که نرم افزار سایت از پردازش آنها عاجز است. پس سایت با کندی و یا قطع سرویس مواجه می شود.
امنیت یا راحتی ؟
طبق توضیحات تا اینجا، ما فهمیدیم که با XML-RPC چقدر کار وبلاگ نویسی ما ساده می شود. اما از طرف دیگر همین چند دقیقه پیش برای شما معایب XML-RPC هم برشماردیم. این تصمیم شماست که کدامیک را انتخاب کنید. البته یک راه حل سومی هم وجود دارد که هم راحتی را در پی دارد و هم امنیت سایت شما را.
البته وقتی از تهدید XML-RPC صحبت می کنیم، بدین معنا نیست که اگر روی سایت شما XML-RPC فعال باشد، هک شدن آن حتمی است. همینک میلیون ها سایت وردپرس با XML-RPC فعال در حال فعالیت هستند و جای هیچ نگرانی هم نیست. اما همیشه باید به فکر بهترین بود تا بهتر!
رابط REST به عنوان راه حل نهایی
یکی از مباحث جذاب برنامه نویسی در رابطه با وردپرس که در مستندات وردپرس هم درباره آن زیاد صحبت شده، رابط REST است. توسعه دهندگان وردپرس روی این رابط که می تواند جایگزین خوبی برای XML-RPC باشد زمان زیادی را گذاشتند و حال آمادۀ بهره برداری برای برنامه نویسان وردپرس است.
دکمه های اشتراک گذاری محتوا در شبکه های اجتماعی که در سایت های مختلف وجود دارند را به یاد بیاورید. شما با کلیک روی آنها، یک پنجره کوچکی را خواهید دید که از شما می خواهد وارد حساب خود شوید. در آن پنجره صفحه ای از خود سایت شبکۀ اجتماعی مثل توییتر یا فیسبوک وجود دارد و شما اطلاعات ورود خود را در همان سایت وارد می کنید، نه یک سایت ثالث. اگر هم از قبل وارد حساب تان شده باشد که تنها کافی است با یک کلیک محتوا را در صفحۀ شخصی خود به اشتراک بگذارید. این نمونه ای از طرز عمل جایگزینه XML-RPC است که هم امن تر است و هم ساده تر.
این بود یک توضیح کامل و خوب راجع به اینکه XML-RPC چیست و در وردپرس چه کاربردی دارد. افزونه ها و امکانات زیادی هستند که با XML-RPC کار می کنند و ایده های زیادی را می توان بر اساس آن پیاده سازی کرد.