لطفا یک نمونه کد لایسنس دار قرار بدید
لطفا یک نمونه کد لایسنس دار قرار بدید
با سلام
چون دوست گرامی T.Toosi هم چنین درخواستی داشتند یه توضیح مختصری در مورد عملکرد سیستم میدم خدمتتون و نمونه کد:
بینید پس هر از بار تولید لایسنس برای یوزری جدیدی ۱- رکوردی ساخته میشه در دیتابیس شما که سریال و نام دامنه مورد لایسنس نگارش میشه ۲- فایلی ساخته میشه در سیستم که به عنوان نمونه license.key نام گذاری شده . این فایل با هر اسم و نامی میتونه ساخته بشه مثلا key.php و ..... که در کل محتویات فایل مذکور بدین شکل است :
اولی مقدار لایسنسی هست که برای این یوزر ساختید...در دیتابیس شما نیز این مقدار نگارش شدهکد PHP:
$license = "8124-9C64-E745-4A1D";$server = $_SERVER["SERVER_NAME"];$c = curl_init();curl_setopt($c, CURLOPT_URL, "http://yourDomain.com/verify.php");
دومی هم نام دامنه فعلی شما رو داره میفرسته ..دامنه ای که در دیتابیس هم نگارش شده
سومی هم که مشخصه داره ارتباط برقرار میکنه با چک کننده لایسنس که اون چک کننده با دیتابیس در ارتباطه و کلا صحت یا غیر صحیح بودن لایسنس هارو تعیین میکنه
و در کل هر گونه حذف نمودن این فایل (license.key) یا ویرایش اون از درون سورس مشتری یعنی قطع نمودن ارتباط با چک کننده لایسنس و مشاهده خطا و ارور
ایمپورت فایل license.key درون سورسمون روهم خیلی ساده با مقداری مثلا :وارد کردیم در فایل اصلی index.php . اگه این فایل رو سورسمون هم ایمپورت نشده باشه مجددا مشاهده خطا و ارور رو به همراه دارهکد PHP:
include("./license.key");
حالا نمونه کدی که لایسنس دار کردیم هم بدین شرح میتونه باشه :
گام بعدی اینکه فایلی که اینگونه کد گذاری کردیم رو میتونید با هرگونه دکودر ناخونا کنید مثل زندگارد و ....... روش دیگری هم خودمون میتونیم بهتون پیشنهاد بدیم که با خود PHP ناخونا میشه کدهاتون که به هیچ وجه قابل بازگردوندن نیست ...نمونه :کد PHP:
if ($result=="verified"){
// your PHP Code
} else {
echo 'your website is using Un-Register license';
}
و بازهم راه دیگری هست که جدا از تمام موارد بالا که عرض شد بیاین اون کد گذاری لایسنس رو در یکی از فایل های مهم و اصلی سورستون مثلا در یکی از Function ها قرار بدین و اون تک فایل رو در سرور خودتون قرار بدین و بدون دسترسی یوزر هست و بعد تو سورس بازخونیش کنید....کد PHP:
($mystr1s2235=="\x76\x65\x72i\x66\x69\x65d"){}
بازم عرض میکنم خدمتتون تمامی عملیاتی که قراره صورت بگیره رو به بهترین نحو براتون محیا میکنیم و به همراه آموزش کامل که خودتون انجام بدین و اصلا لازم نیست نگران این باشید که سورستون رو به غیر واگذار کنید برای لایسنس گذاری. حتی شده مساعد ترین راه رو برای بعضی از دوستان قرار دادیم که با Teamweaver یه جلسه هماهنگ کردیم و ریموت شدیم روی سیستم ایشون و روی فایلشون روی سیستم خودشون براشون کدگذاری رو انجام دادیم بدون اینکه لازم باشه فایلی برای ما ارسال کنن. در هرصورت امیدوارم توضیحات کامل و مفید باشه.
ویرایش توسط nikrasam : September 28th, 2017 در ساعت 19:18
باسلام، بحث ناخوانا یا obfuscator کردن شما اونم با یک utf8 که هیچ ارزشی ندارد، اگر قرار باشد در این پروژه از انکودر های zend یا ioncube استفاده شود که دیگر به سیستم شما نیازی نیست، اگر باز قرار است تکه کد حیاتی از سرور خوانده شود با Sniff کردن شبکه خیلی راحت آن تکه کد را میتوان بدست آورد و جایگزین کرد داخل کد ها، در هر صورت اگر تمایل داشتید یک لایسنس برای دامین Faranevis.com ایجاد کنید و یک کد لایسنس دار شده برای من بفرستید تا امنیت سیستم لایسنس شما را تست کنم.کد:گام بعدی اینکه فایلی که اینگونه کد گذاری کردیم رو میتونید با هرگونه دکودر ناخونا کنید مثل زندگارد و ....... روش دیگری هم خودمون میتونیم بهتون پیشنهاد بدیم که با خود PHP ناخونا میشه کدهاتون که به هیچ وجه قابل بازگردوندن نیست ...نمونه :
اشتباه متوجه شدید.
ضعف اول : مجبورید قسمتی از فایل را کد کنید، اگر obfuscator باشد که هیچ ارزشی ندارد حتی وبمستر های سطح پایین هم میتوانند دیکد کنند، اگر از انکودر های دیگری استفاده کنید که دیگر نیازی به سیستم شما نیست.و بازهم راه دیگری هست که جدا از تمام موارد بالا که عرض شد بیاین اون کد گذاری لایسنس رو در یکی از فایل های مهم و اصلی سورستون مثلا در یکی از Function ها قرار بدین و اون تک فایل رو در سرور خودتون قرار بدین و بدون دسترسی یوزر هست و بعد تو سورس بازخونیش کنید....
ضعف دوم: خواندن قسمتی از کد از سرور، وقتی از کلاینت به سرور درخواستی ارسال می شود، به طور مثال دریافت قسمتی از کد، خیلی ساده کلاینت میتواند شبکه داخلی خودش را Sniff کند و پاسخ سرور را مشاهده کند.
در کل بیشتر تمرکز شما ایجاد یک سایت و سامانه برای مدیریت لایسنس ها بوده است نه امنیت و متاسفانه نمیدونم چرا نمونه کد قرار نمیدید یا ارسال نمی کنید! تا مشتری از امنیت سیستم شما مطمئن نشود هیچ سرویسی از شما تهیه نمی کند، برای مثال میتوانید یک کد Hello World لایسنس دار شده برای دامنه به طور مثال، من مشتری ارسال کنید تا سیستم شما را تست کند.
درود بر تمامی دوستان عزیز.
با اجازه از استارت عزیز.
چند نکته رو یادآوری کنم :
مشکلات اصلی این سیستم که قابل استفاده بودن تقریبا نیست، این هست که obfuscator ندارین، و اگر هم دارین تقریبا با نداشتنش فرقی نداره لذا به راحتی میشه این بخش رو از کدها حذف کرد.
نکته بعدی دوستان zend و ioncube رو مثال زدند، در این سیستم ها قابلیت محدود سازی وجود داره اما نه حرفه ای مثلا محدود کردن زمانی، لایسنسی یا حتی آی پی خاص، خب این بدین معنی هست که اگر بخواین مثلا ioncube رو محدود کنید باید هربار برای هر مشتری مجدد کد کنید یا با تغییر IP طرف باز مجدد این کار رو انجام بدید که عملا کارآیی رو پایین میاره!
خب بنده چند سالی هست به دلایلی سیستمی این چنینی طراحی کردم و استفاده میکنم! البته که در برخی موارد سیستم شمارو حتی با داشتن obfuscator میشه دور زدش!
سیستمی که مدتهاست استفاده میکنیم و اخیرا آپدیتش کردیم و البته فقط برای خودمون هست و هنوز به صورت عمومی منتشر نکردیم. مزایا خاصی داره. (البته این مزایا که ذکر میکنم شامل سیستم ایشون هم میشه.)
مثلا اینکه شما بخواید بلادرنگ لایسنس منتشر کنید.
یا تستی یک سیستم رو به شخصی بدید و در زمان دلخواه منقضی کنید.
یا اینکه لایسنس رو راحت تغییر بدید و ...
و حتی در سایت ما بلافاصله بعد از خرید لایسنس شخص برای دامنه یا IP فرد صادر میشه.
خب سیستم ما تقریبا نمونه ای از بخش اتصالی شمارو داره البته کمی کامل تر، که فعلا توضیح نمیدم.
در زمینه obfucator هم یا باید هزینه بالایی رو بدید که ioncube یا zend رو خرید کنید. یا از مثلا نسخه آنلاین ioncube استفاده کنید که باید هزینه برای هر فایل پرداخت کنید.
خب ما با روشی به وسیله ioncube و کمک از اون کدهارو obfucator میکنیم. این کار هزینه هارو کاهش میده.
تضمین صد در صد ایمن بودن رو نمیکنیم. چون هیچ سیستمی امن نیست! اما خب تاحدی میشه گفت مطمئن هست.
نمونه هم در اینستاگرامم منتشر کردم، البته فقط خودمون استفاده میکنیم، اما احتمالا با یکسری آپدیتها در سایتمون هم منتشرش کنیم.
بقیه هم استفاده کنن.
نمونه فقط Obfuscator :
https://www.instagram.com/p/BROD8Gpg...y=masterking32
درضمن قفل سخت افزاری PHP هم قابل فعال شدن هست که برای یک سیستم کار میکنه با هر آی پی یا هر دامنه ای.
نقاط ضعفی که دوستمون گفت رو همه رو میشه فیکس کرد. چرا که Sniff یا هرچیزی در صورت کد بودن اطلاعات به روشی جدید غیر قابل نفوذ هست.
مورد بعدی کاهش تعداد اتصالات هست! اینکه برای هر درخواست به سایت شما متصل بشه اصلا بهینه نیست.
این رو هم برای درک بهتر دوستان گفتم و قصد خراب کردن تاپیک ایشون و ***ی یا معرفی سیستم دیگه ای رو ندارم، چون در حال حاضر این سیستم رو ارائه نمیدیم که کار شمارو خراب کنیم. فقط جهت اطلاع و شفاف سازی دوستان گفتم.
باز هم اینها قدیمی شده تقریبا نمونه های جدید و بهتری داریم.
که انشاا... اگه شد معرفی میکنیم.
موفق باشید.
ویرایش توسط masterking32 : September 29th, 2017 در ساعت 00:07
انتظار قرار دادن تمامی کدهارو ندارین که ! ما فقط بخش کمی از کدهای مربوطه رو انتشار دادیم و بیشتر از این هم منتشر نمیشه ... جهت اطلاع عرض میکنم که ماهم خیلی بی فکرانه اتصالات مکرر یوزر رو به سرور قرار ندادیم.....فقط ۱ بار اتصال صورت میگیره ... درضمن حتی فکر این هم شده که هیچ سروری آپ تایم 100٪ ندارد که پس تکلیف حتی 1 دقیقه ای که اون هاست قطعی براش به وجود میاد چیه و آیا سایت یوزر از کار میوفته !
جواب خیر است و میتونیم تعریف کنیم که مثلا حتی زمانی که سرور در دسترس نبود و چک کننده نتونست اتصال برقرار کنه این مورد رو صحیح درنظر بگیره و در اولین زمان بعدی مجددا اتصال رو چک کنه
بازم اگر دقیق تر ملاحضه میکردید ما اصلا نیازی به فروش این سیستم نداریم چون نه جایی هزینه ای اعلام کردیم نه فروش و حراجی زدیم واسه این سیستم پس نه نگران فروشیم نه سیستم شما تهدیدی برای ماست... اگر متوجه باشید این کار یجور تعامله با همکارانمون و برنامه نویسان...یعنی نقات قوت و ضعف گفته میشه واسه قوی تر شدن کار...وگرنه این یه اسکریپت مثلا فروشگاهی نیست که طمع داشته باشیم 200 نسخه ازش بفروشیم....کلا هدف رو اشتباه متوجه شدین. این جوابی هست به اون یوزری هم هست که گفت اینجوری کسی از شما خرید نمیکنه ( نمیدونم چی فکر کردن )
با وجود این بازهم حدود 20 یوزر برنامه نویس داریم که دارن از این سیستم استفاده میکنن و هیچ مشکلی هم ندارن و نمیتونیم هم انتشار بدیم هیچ موردی از اون هارو هم و به هر کدام هم با الگوریتم خاص و منحصربفردی سیستم رو تحویل دادیم... کار ما چیز دیگه ای هست و اگر چنین بحثی رو راه انداختیم تعاملی بوده با برنامه نویس ها.
باسلام، در کل چک کردن لایسنس به صورت ریموت به دلیل عدم تضمین آپ تایم کار اشتباهی هست حتی اگر اطلاعات شما به صورت کد شده در شبکه منتقل شود، کلاینت با راه اندازی Destination Nat می تواند آدرس Request لایسنس را به اسکریپت خودش منتقل کند و Response مورد نظر خودش را برگشت دهد.
پیشنهاد من به شما راه اندازی سامانه ای مثل دوست ـمون که در بالا اشاره کردن است، الگوریتم دیکد خودشان را با Ioncube کد کرده اند و کد بهم ریخته را به آن می فرستند. که شما یک فایل Runner به مشتری هاتون بدید برای اجرای کد های بهم ریخته.
درود مجدد،
آپتایم بله گاها به این مشکل میخوریم، اما خب میشه از چند سرور به صورت ترکیبی استفاده کرد.
در مورد Response دلخواه هم بهتره ذکر کنم که در مورد مثلا سیستم ما این عمل کارآیی نداره ! چراکه یک رشته کد نامعلوم End-To-End دریافت میکنه و این رشته به روش های مختلف فقط به صورت خاصی معتبر هست بعد از یکسری عملیات ها کلا باطل میشه و دیگه قابل استفاده نیست، روش گفته شده شما برای سیستم های معمولی راحت میشه دورش زد اما نه برای هر سیستمی !
در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)