چطور از نال شدن افزونه وردپرس جلوگیری کنیم؟
نال کردن یعنی کسی سورس افزونه تجاری شما را باز میکند و بخش بررسی لایسنس را حذف میکند تا افزونه بدون خرید کار کند. مؤثرترین راه جلوگیری از نال شدن افزونه، از بین بردن دسترسی به سورس متنی است؛ یعنی انکد فایلهای PHP که کد را به بایتکد تبدیل میکند و ویرایش منطق لایسنس را عملا غیرممکن میسازد. در ادامه میبینید نالکنندهها دقیقا چه میکنند و کدام لایه واقعا جلویشان را میگیرد.
این مقاله در یک نگاه
- نال کردن بدون دسترسی به سورس خوانا عملا ممکن نیست.
- انکد سورس مؤثرترین لایه است، اما به تنهایی جلوی کپی فایل را نمیگیرد.
- قفل دامنه لایه دوم است و کپی روی سایت دیگر را بیاثر میکند.
- obfuscation ساده و حذف کامنت تقریبا هیچ محافظتی ایجاد نمیکند.
- هدف واقعی، غیراقتصادی کردن نال است نه ادعای امنیت مطلق.
نال شدن افزونه یعنی چه؟
نال کردن به فرایندی گفته میشود که در آن کسی نسخه تجاری یک افزونه را میگیرد، بخش اعتبارسنجی لایسنس آن را خنثی میکند و نسخه حاصل را رایگان توزیع میکند. برای فروشنده افزونه، این یعنی از دست رفتن مستقیم درآمد.
نکته کلیدی که تصمیمگیری را ساده میکند این است: نال کردن یک کار تحلیلی روی متن کد است. تا وقتی فایل PHP به صورت متن خوانا در دسترس باشد، این کار برای هر توسعهدهنده متوسطی شدنی است. وقتی متن خوانا حذف شود، کل روش کار از پایه فرو میریزد.
نالکنندهها دقیقا چه میکنند؟
روند کارشان تقریبا همیشه یکسان و قابل پیشبینی است. شناختن این سه مرحله کمک میکند بفهمید هر لایه محافظتی کجا اثر میگذارد.
- پیدا کردن نقطه بررسی سورس را باز میکنند و دنبال تابع یا کلاسی میگردند که وضعیت لایسنس را برمیگرداند.
- خنثی کردن بررسی آن تابع را حذف میکنند یا مقدار بازگشتیاش را همیشه معتبر میکنند.
- قطع ارتباط با سرور لایسنس درخواستهای افزونه به سرور شما را مسدود یا جعل میکنند تا غیرفعالسازی از راه دور ممکن نباشد.
هر سه مرحله به سورس خوانا وابستهاند. این دقیقا همان جایی است که انکد افزونه وردپرس ورق را برمیگرداند.
لایههای محافظت و اثربخشی واقعی
همه روشهای محافظت یک اندازه مؤثر نیستند. جدول زیر بر اساس تجربه عملی، اثربخشی هر لایه را نشان میدهد.
| روش | میزان اثر | توضیح |
|---|---|---|
| حذف کامنت و فشردهسازی کد | بسیار کم | با ابزارهای رایگان در چند ثانیه برمیگردد |
| obfuscation ساده نام متغیرها | کم | خواندن را سخت میکند اما منطق دستنخورده میماند |
| انکد با ionCube (کامپایل به بایتکد) | زیاد | سورس خوانا حذف میشود؛ ویرایش منطق عملا غیرممکن |
| قفل دامنه | زیاد | حتی کپی فایل روی دامنه دیگر اجرا نمیشود |
| اعتبارسنجی سمت سرور | مکمل | بخشی از منطق حیاتی از دسترس خارج میماند |
ترکیب برنده
هیچ روشی به تنهایی صد در صد ضدنال نیست و هر کس چنین ادعایی کند دقیق حرف نمیزند. اما ترکیب زیر عملا نال کردن را غیراقتصادی میکند، یعنی هزینه و زمانش از ارزش خود محصول بیشتر میشود.
لایه اول انکد فایلهای PHP است، بهویژه کلاسهای لایسنس. لایه دوم قفل کردن خروجی روی دامنه خریدار است تا کپی فایل روی سایت دیگر بیاثر شود. لایه سوم نگه داشتن بخشی از منطق مهم روی سرور خودتان است؛ مثلا محاسبهای که افزونه فقط نتیجهاش را دریافت میکند.
کدام فایلها را انکد کنیم؟
فایل اصلی افزونه، کلاسهای منطق کسب و کار و مخصوصا کلاس اعتبارسنجی لایسنس. در مقابل، فایل readme.txt، فایلهای ترجمه و assets نباید انکد شوند؛ اینها باید خوانا بمانند و انکدشان فقط دردسر سازگاری میسازد.
راهنمای کامل انتخاب فایلها با جدول تفصیلی در صفحه انکد افزونه وردپرس آمده است.
باورهای غلط رایج
| باور رایج | واقعیت |
|---|---|
| انکد سرعت افزونه را کم میکند | مرحله تجزیه سورس حذف میشود؛ تفاوت معمولا زیر یکی دو درصد است |
| افزونه انکدشده روی هاستها کار نمیکند | روی هر هاستی که لودر رایگان دارد اجرا میشود |
| انکد یعنی امنیت صد در صد | هدف غیراقتصادی کردن نفوذ است، نه امنیت مطلق |
| باید همه فایلها را انکد کرد | انکد ترجمه و assets فقط مشکل میسازد |
برای شناخت فنی ابزار، مقاله ionCube Encoder چیست را ببینید. دیدگاه رسمی سازنده درباره سطوح محافظت هم در سایت ionCube توضیح داده شده است.
سوالات متداول
آیا افزونه انکدشده هم قابل نال است؟
عملا بسیار سخت. چون سورس خوانا وجود ندارد، نالکننده نمیتواند بخش لایسنس را پیدا و حذف کند. با افزودن قفل دامنه، حتی کپی مستقیم فایل هم بیفایده میشود.
انکد روی عملکرد افزونه اثر میگذارد؟
خیر. هوکها و اکشنهای وردپرس بدون تغییر اجرا میشوند و چون مرحله تجزیه سورس حذف میشود، افت سرعت محسوسی وجود ندارد.
آیا میتوانم برای هر خریدار نسخه جدا بسازم؟
بله. خروجی قفلشده روی دامنه هر مشتری قابل تهیه است و مؤثرترین راه توقف توزیع غیرمجاز است.
obfuscation به تنهایی کافی نیست؟
خیر. obfuscation فقط خواندن کد را سخت میکند اما منطق را دستنخورده میگذارد و قابل بازگردانی است.
فایلهای ترجمه را هم انکد کنم؟
خیر. ترجمهها، readme و assets باید خوانا بمانند وگرنه افزونه یا وردپرس درست کار نمیکند.
مطالب مرتبط: انکد افزونه وردپرس · قفل اسکریپت روی دامنه · صفحه انکد وردپرس
PHP