فروش اسکریپت PHP یک مشکل قدیمی دارد: خریدار میتواند همان فایل را روی ده سایت دیگر نصب کند یا به دیگران بدهد. لایسنسگذاری اسکریپت PHP این مشکل را از ریشه حل میکند. وقتی خروجی انکدشده را روی دامنه خریدار قفل میکنید، کپی همان فایل روی هر دامنه دیگری با خطای لایسنس متوقف میشود؛ و اگر تاریخ انقضا هم بگذارید، میتوانید نسخه دمو و اشتراک زماندار بفروشید.
لایسنسگذاری اسکریپت یعنی چه؟
لایسنسگذاری یعنی به خروجی انکدشده بگویید تحت چه شرایطی اجازه اجرا دارد. این شرطها میتواند نام دامنه، آدرس IP سرور، یا یک بازه زمانی باشد. هنگام انکد، این قوانین داخل فایل خروجی نوشته میشوند و در زمان اجرا توسط لودر بررسی میشوند.
تفاوت کلیدی این روش با سیستمهای لایسنس معمولی همینجاست. در روش سنتی، شما یک کلاس PHP مینویسید که لایسنس را چک میکند؛ اما آن کلاس خودش کد PHP است و هر کسی میتواند بازش کند و حذفش کند. اما وقتی شرط اجرا در سطح لودر تعریف شده باشد، چیزی برای حذف کردن وجود ندارد چون بررسی بیرون از کد قابل ویرایش انجام میشود.
به همین دلیل ترتیب کار اهمیت دارد: اول باید کد انکد شود، بعد قوانین لایسنس روی همان خروجی اعمال شود. لایسنسگذاری روی سورس خام هیچ محافظتی ایجاد نمیکند.
لایسنس چطور بررسی میشود؟
وقتی یک درخواست به اسکریپت انکدشده میرسد، ionCube Loader پیش از اجرای کد، شرایط ثبتشده را با وضعیت فعلی سرور مقایسه میکند. اگر دامنه فعلی با دامنه مجاز یکی نبود یا تاریخ گذشته بود، اجرا متوقف و پیام خطای لایسنس نمایش داده میشود.
این بررسی بسیار سبک است و اثر محسوسی روی سرعت ندارد، چون فقط یک مقایسه ساده در ابتدای بارگذاری فایل انجام میشود. مهمتر اینکه چون در لایه لودر اتفاق میافتد، نه در کد شما، تغییر دادنش نیازمند دستکاری خود لودر است که کار عملیای نیست.
انواع محدودسازی و کاربرد هرکدام
انتخاب نوع قفل به مدل فروش شما بستگی دارد. انتخاب اشتباه یا باعث دردسر پشتیبانی میشود یا محافظت را ناکافی میگذارد.
| نوع محدودیت | مناسب برای | مزیت | نکته |
|---|---|---|---|
| قفل دامنه | محصولات وب روی هاست اشتراکی | دامنه ثابت میماند و مدیریتش ساده است | تغییر دامنه مشتری نیازمند صدور مجدد است |
| قفل IP سرور | پروژه اختصاصی روی سرور مشتری | مناسب محیطهای داخلی بدون دامنه | تغییر IP سرور اجرا را متوقف میکند |
| تاریخ انقضا | نسخه آزمایشی و اشتراک زماندار | فروش دورهای را ممکن میکند | باید فرایند تمدید مشخصی داشته باشید |
| ترکیب دامنه و انقضا | دموی محدود به یک سایت | سختگیرانهترین حالت | برای دمو ایدهآل است |
قفل دامنه یا قفل IP؟
برای اکثر محصولات وب، قفل دامنه انتخاب اول است چون دامنه چیزی است که مشتری روی آن سرمایهگذاری کرده و بهراحتی عوضش نمیکند. قفل IP بیشتر برای پروژههای on-premise کاربرد دارد؛ جایی که نرم افزار روی سرور داخلی یک سازمان نصب میشود و ممکن است اصلا دامنه عمومی نداشته باشد. توضیح کاملتر این تصمیم در مقاله قفل کردن اسکریپت PHP روی یک دامنه آمده است.
مراحل صدور لایسنس برای مشتری
فرایند عملی صدور لایسنس در سرویس ما ساده است و در همان مرحله انکد انجام میشود؛ نیازی به ابزار جداگانه یا خرید لایسنس انکدر ندارید.
- دریافت دامنه خریدار هنگام فروش، دامنهای که اسکریپت روی آن نصب میشود را از مشتری بگیرید.
- آپلود سورس فایل یا پروژه ZIP را در پنل انکد آنلاین بارگذاری کنید.
- انتخاب نسخه هدف PHP نسخهای را انتخاب کنید که سرور مشتری اجرا میکند.
- تعیین قوانین لایسنس دامنه مجاز و در صورت نیاز تاریخ انقضا را وارد کنید.
- تحویل خروجی فایل قفلشده را به مشتری بدهید؛ روی هیچ دامنه دیگری اجرا نمیشود.
- ثبت سوابق دامنه و تاریخ هر لایسنس را نگه دارید تا تمدید و پشتیبانی آسان باشد.
اسکریپت خود را قفل کنید
خروجی انکدشده با قفل دامنه بگیرید تا فقط روی سایت خریدار اجرا شود.
شروع انکد و لایسنسگذاریساخت نسخه آزمایشی با تاریخ انقضا
نسخه آزمایشی یکی از موثرترین ابزارهای فروش نرم افزار است، اما فقط وقتی امن باشد که پس از پایان دوره واقعا از کار بیفتد. با تعیین تاریخ انقضا هنگام انکد، خروجی بعد از آن تاریخ اجرا نمیشود.
یک نکته فنی را در نظر بگیرید: بررسی تاریخ به ساعت سیستم سرور متکی است. اگر مشتری کنترل کامل سرور را داشته باشد، در تئوری میتواند ساعت سرور را عقب ببرد. برای محصولات حساس، بهتر است تاریخ انقضا را با یک بررسی سمت سرور خودتان ترکیب کنید تا اعتبار واقعی از سرور شما تایید شود.
| مدل فروش | پیشنهاد لایسنس |
|---|---|
| خرید یکباره و دائمی | قفل دامنه بدون تاریخ انقضا |
| اشتراک سالانه | قفل دامنه به همراه انقضای یکساله و فرایند تمدید |
| دموی هفتروزه | قفل دامنه به همراه انقضای کوتاه |
| نصب داخلی سازمانی | قفل IP سرور |
محدودیتها و نکاتی که باید بدانید
صادق بودن درباره محدودیتها هم به تصمیم درست شما کمک میکند و هم از وعده اشتباه به مشتری جلوگیری میکند.
اول اینکه لایسنسگذاری جای انکد را نمیگیرد. اگر کد انکد نشده باشد، هر شرطی که بگذارید داخل سورس قابل حذف است. دوم اینکه هیچ روشی امنیت مطلق نمیدهد؛ هدف بالا بردن هزینه شکستن محافظت است تا از ارزش محصول بیشتر شود. سوم اینکه هر تغییر در دامنه یا سرور مشتری نیازمند صدور خروجی جدید است، پس فرایند پشتیبانی خود را از قبل مشخص کنید.
برای آشنایی با ملاحظات سازگاری نسخهها هنگام تحویل خروجی به مشتری، مقاله سازگاری ionCube با PHP 8.3 و 8.4 را ببینید. مستندات رسمی گزینههای لایسنس هم در سایت رسمی ionCube در دسترس است.
سوالات متداول
اگر مشتری دامنهاش را عوض کند چه میشود؟
اسکریپت روی دامنه جدید اجرا نمیشود و باید خروجی تازهای با دامنه بهروز برایش صادر کنید. به همین دلیل بهتر است سیاست تغییر دامنه را از ابتدا در شرایط فروش مشخص کنید.
قفل دامنه قابل دور زدن است؟
چون بررسی در سطح لودر و روی فایل انکدشده انجام میشود و سورس خوانا در دسترس نیست، دور زدن آن عملا بسیار سخت است. هیچ روشی امنیت مطلق نمیدهد، اما این روش هزینه نفوذ را بسیار بالا میبرد.
میتوانم چند دامنه را برای یک مشتری مجاز کنم؟
بله. میتوان لایسنس چنددامنهای صادر کرد یا سابدامنهها را هم مجاز کرد. این را هنگام سفارش مشخص کنید.
برای لایسنسگذاری باید انکدر ionCube بخرم؟
خیر. صدور خروجی قفلشده در همان مرحله انکد آنلاین انجام میشود و نیازی به خرید لایسنس گران انکدر ندارید.
تاریخ انقضا با تغییر ساعت سرور دور زده میشود؟
بررسی تاریخ به ساعت سرور متکی است، پس در محیطی که مشتری کنترل کامل سرور را دارد این ریسک وجود دارد. برای محصولات حساس، انقضا را با یک بررسی آنلاین از سمت سرور خودتان ترکیب کنید.
لایسنس روی سرعت اجرا اثر میگذارد؟
خیر. بررسی لایسنس یک مقایسه ساده در ابتدای بارگذاری فایل است و اثر محسوسی بر زمان پاسخ ندارد.
PHP