PDA

View Full Version : حرفه ای: قفل کردن سورس سایت روی یک دامنه



moslem.hady
یک شنبه 06 تیر 1395, 15:40 عصر
سلام دوستان.
من میخوام سورس کامل یک سایت که با asp.net #c طراحی کردم رو به مشتری بدم. اما نمیخوام ازس سواستفاده ای بشه یا بتونه بفروشه. میخوام اون سورس فقط برای دامنه ای که مشخص شده کار کنه. و خودش هم نتونه از توی سورس دامنه رو تغییر بده.
چطور چنین کاری رو انجام بدم؟
توجه کنید که سورس کامل در اختیارشه. پس نمیشه یه کد قابل نمایش یا قابل تغییر گذاشت.
ممنون

پیام حیاتی
یک شنبه 06 تیر 1395, 17:29 عصر
سلام
از نظر من این کار انجا شدنی نیست با توجه به اینکه سورس کامل و سالم در حال کار پروژه فعلی را کارفرما در اختیار دارد.
می توانستید برخی کلاس های مهم پیاده سازی شده رو در سرور خودتون قرار می دادید و تنها لینک آنها را در پروژه استفاده می کردید.

moslem.hady
یک شنبه 06 تیر 1395, 17:38 عصر
سلام
از نظر من این کار انجا شدنی نیست ....

آیا میشه یه تعدادی از کلاس های خاص + کد قفل روی دامنه رو توی یه dll به پروژه اضافه کرد که امکان تغییر اونها نباشه؟؟

Answer
یک شنبه 06 تیر 1395, 19:58 عصر
به نظرم میشه یه کلک زد و همیشه Domain درخواست کننده صفحه رو کنترل کنی
میدونم که با جاوااسکریپت میشه Domain درخواست کننده صفحه رو گرفت و اونجا چک کنی اگر درست نبود به یه صفحه دیگه Redirect بشه

moslem.hady
یک شنبه 06 تیر 1395, 19:59 عصر
به نظرم میشه یه کلک زد و همیشه Domain درخواست کننده صفحه رو کنترل کنی
میدونم که با جاوااسکریپت میشه Domain درخواست کننده صفحه رو گرفت و اونجا چک کنی اگر درست نبود به یه صفحه دیگه Redirect بشه
بابا سورس دست طرفه، خوب این رو تغییر میده دیگه!

sg.programmer
یک شنبه 06 تیر 1395, 21:45 عصر
به نظرم با وب سرویس یکجوری مقید کن که از یک هاستی (باید برای خودت باشه) اونجا یکسری دیتا بخونه و گرنه برنامه اش اجرا نشه و در خلال همینکار اگر از یک سایتی دیگه ای این سرویس درخواست شد اونو ریدایرکت کن و....

moslem.hady
یک شنبه 06 تیر 1395, 21:46 عصر
به نظرم با وب سرویس یکجوری مقید کن که از یک هاستی (باید برای خودت باشه) اونجا یکسری دیتا بخونه و گرنه برنامه اش اجرا نشه و در خلال همینکار اگر از یک سایتی دیگه ای این سرویس درخواست شد اونو ریدایرکت کن و....
خوب وقتی سورس کامل رو داره، میتونه این وبسرویس رو حذف کنه.

Answer
سه شنبه 08 تیر 1395, 09:16 صبح
خوب وقتی سورس کامل رو داره، میتونه این وبسرویس رو حذف کنه.

وقتی سورس کامل دست مشتری باشه پس شما هیچ راهی نخواهی داشت
مثل این می مونه که خودش برنامه رو نوشته باشه توقع دیگه ای داری شما؟

moslem.hady
سه شنبه 08 تیر 1395, 09:59 صبح
وقتی سورس کامل دست مشتری باشه پس شما هیچ راهی نخواهی داشت
مثل این می مونه که خودش برنامه رو نوشته باشه توقع دیگه ای داری شما؟
گفتم شاید یه راهی باشه که حداقل کار رو سخت تر کنه
یا مثلا یه سری توابع رو کدکنیم.
الان کاری ک من میخوام انجام بدم اینه که توابع اصلیم رو در یک DLL ذخیره کنم و اون DLL رو به پروژه اضافه کنم. اینطوری اگه بخواد تغییر بده باید کل کدهای DLL رو از اول بنویسه جای دیگه. البته اگه بشه dll رو encrypt کرد که خیلی عالی میشه.

amir_T_2008
سه شنبه 08 تیر 1395, 16:18 عصر
سایتی که نوشتید پابلیش کنید و بعد پابلیش شده روی هاست آپلود کنید.

moslem.hady
سه شنبه 08 تیر 1395, 16:54 عصر
سایتی که نوشتید پابلیش کنید و بعد پابلیش شده روی هاست آپلود کنید.
:متفکر: چقدر باید تاکید کنم که میخوام سورس رو بدم بهش؟؟؟ :اشتباه:

sg.programmer
سه شنبه 08 تیر 1395, 17:40 عصر
:متفکر: چقدر باید تاکید کنم که میخوام سورس رو بدم بهش؟؟؟ :اشتباه:
شما اول ببینید چند چند هستید؟

خوب سورس را که دادید باید یک ترفندی بزندید (یک قسمتهاشو کنترل درست کنید - یا یک قسمتهاشو ماژول و دی ال ال کنید و به برنامه ادد کنید ) و یا بنحوی از وب سرویس استفاده کنید قسمتهای از برنامه مقید کنید که یک سرویسی را دریافت کنه و بدون وب سرویس کار نکنه

amir_T_2008
سه شنبه 08 تیر 1395, 19:37 عصر
:متفکر: چقدر باید تاکید کنم که میخوام سورس رو بدم بهش؟؟؟ :اشتباه:

اولا که طلبکارانه صحبت نکنید دوما من راه حل دادم یا طرف داره پول سورس به شما میده که باید سورس کامل بدید اگرم که خودتون میخواید سورس بدید ولی نه کامل اون قسمت هایی که نمیخواید بدید بوسیبه پابلیش تبدیل کنید به dll

moslem.hady
سه شنبه 08 تیر 1395, 20:57 عصر
اولا که طلبکارانه صحبت نکنید دوما من راه حل دادم یا طرف داره پول سورس به شما میده که باید سورس کامل بدید اگرم که خودتون میخواید سورس بدید ولی نه کامل اون قسمت هایی که نمیخواید بدید بوسیبه پابلیش تبدیل کنید به dll
دوست عزیز، اولا وقتی کسی میخواد کمک کنه یا راه حل بده، باید سوال رو بخونه. وگرنه این انجمن میشه یه سری سوالی که در نهایت بی جواب میمونن!! ما میخوایم با هم یه سری سوال جواب داده بشه که بدرد خودمون و آیندگان بخوره!
دوما، وقتی من اومدم این سوال رو اینطوری طرح کردم، ربطی به این نداره که من پول سورس گرفتم، یا خودم میخوام بدم. من یه شرایطی دارم که میخوام مشکلم توش برطرف بشه. اومدم اینجا سوال کردم.
سوما، راه حل شما اصلا به سوال ربط نداشت! من میگم سورس میخوام بدم، شما میگی پابلیش کن!
چهارما، ممنون، پاسخ آخر شما از همه دوستان نزدیک تر بود به جواب که در نهایت خودم بهش رسیده بودم. ولی کامل نیست باز هم.

alireza_s_84
سه شنبه 08 تیر 1395, 21:18 عصر
سلام دوستان.
من میخوام سورس کامل یک سایت که با asp.net #c طراحی کردم رو به مشتری بدم. اما نمیخوام ازس سواستفاده ای بشه یا بتونه بفروشه. میخوام اون سورس فقط برای دامنه ای که مشخص شده کار کنه. و خودش هم نتونه از توی سورس دامنه رو تغییر بده.
چطور چنین کاری رو انجام بدم؟
توجه کنید که سورس کامل در اختیارشه. پس نمیشه یه کد قابل نمایش یا قابل تغییر گذاشت.
ممنون
اینکار مستلزم این هست که یک قسمتی از سورس که قلب نرم افزار هم هست بصورت یک dll دربیاد سپس مکانیزم امنیتی خودتون رو توی اون پیاده سازی کنید.
برای مثال لایه دسترسی به داده رو به انضمام یک کلاس که HttpHandler رو پیاده سازی کرده بصورت dll دربیارین و توی اون هندلر با هر درخواست چک کنید که درخواست رسیده به دامینی باشه که مدنظر شماست اگر نبود میتونید خطای 403 برگردونید. در نهایت این dll رو میتونید با ابزارهای درهم ساز ازش محافظت کنید که خب در هرصورت امکان دور زدن اون وجود داره. اینکار فقط هزینه دور زدن رو بالا میبره و اگر کسی متخصص باشه خیلی راحت میتونه با جایگزین کردن این dll خودش لایه دسترسی به داده رو پیاده سازی کنه.

moslem.hady
سه شنبه 08 تیر 1395, 21:21 عصر
اینکار مستلزم این هست که یک قسمتی از سورس که قلب نرم افزار هم هست بصورت یک dll دربیاد سپس مکانیزم امنیتی خودتون رو توی اون پیاده سازی کنید.
برای مثال لایه دسترسی به داده رو به انضمام یک کلاس که HttpHandler رو پیاده سازی کرده بصورت dll دربیارین و توی اون هندلر با هر درخواست چک کنید که درخواست رسیده به دامینی باشه که مدنظر شماست اگر نبود میتونید خطای 403 برگردونید. در نهایت این dll رو میتونید با ابزارهای درهم ساز ازش محافظت کنید که خب در هرصورت امکان دور زدن اون وجود داره. اینکار فقط هزینه دور زدن رو بالا میبره و اگر کسی متخصص باشه خیلی راحت میتونه با جایگزین کردن این dll خودش لایه دسترسی به داده رو پیاده سازی کنه.

خیلی ممنون از پاسخ کامل و صحیحتون.
در دو مورد من اطلاعاتم کمه که اگه لطف کنید منبع بدید یا بگید چی انگلیسی سرچ کنم ممنون میشم:

لایه دسترسی به داده رو به انضمام یک کلاس که HttpHandler رو پیاده سازی کرده بصورت dll دربیارین
و

dll رو میتونید با ابزارهای درهم ساز ازش محافظت کنید

alireza_s_84
سه شنبه 08 تیر 1395, 23:27 عصر
لایه دسترسی به داده رو به انضمام یک کلاس که HttpHandler رو پیاده سازی کرده بصورت dll دربیارین

خب قاعدتا برای اتصال به دیتابیس از یک روشی استفاده میکنید. یا Ado.net یا EF که در هرصورت شما اگر بصورت چند لایه و اصولی کار کرده باشین یک کلاس برای ارتباط با دیتابیس دارین که توی EF این کلاس DBContext شماست. در واقع شما باید کلاسهایی که ارتباط شما رو با دیتابیس برقرار میکنه بصورت یک اسمبلی جدا به پروژه تون اضافه کنید. برای اینکار به همون Solution خود یک پروژه از نوع Class Library اضافه کنید و کدهای ارتباط با دیتابیس رو توی این پروژه پیاده سازی کنید. توی همین اسمبلی هم HttpHandler رو پیاده سازی کنید بعد این پروژه رو بصورت رفرنس به پروژه اصلی معرفی کنید.

برای محافظت از کدهای نوشته شده در دات نت شما میتونید از نرم افزارهای زیر استفاده کنید:
سایت سافت 98 (http://soft98.ir/tags/%D9%85%D8%AD%D8%A7%D9%81%D8%B8%D8%AA+%D8%A7%D8%B2+ %DA%A9%D8%AF%D9%87%D8%A7%DB%8C+%D9%BE%D8%B1%D9%88% DA%98%D9%87+%D9%87%D8%A7%DB%8C+%D9%86%D8%B1%D9%85+ %D8%A7%D9%81%D8%B2%D8%A7%D8%B1%DB%8C/)

kamranetemadi
پنج شنبه 10 تیر 1395, 02:38 صبح
بهتره دنبال این چیزا نباشی
ولی با web api شاید بتونی یه کارایی بکنی

korosh00
پنج شنبه 10 تیر 1395, 14:50 عصر
شما باید کانکشن استرینگ رو رمزنگاری کنید .
یعنی وقتی طرف سایت رو نصب و اجرا میکنه سایت اجرا نمیشه و نیاز هست کانکشن استرینگ رمزنگاری شود .
حالا این رمزنگاری چجوری هست و اینا اطلاعی ندارم .
شاید برنامه موقع اجرا شدن نیاز داره متصل بشه به یک سایتی دیتابیسی چیزی کدی رو بخونه .
ولی این شیوه بعضی شرکت های طراحی سایت در ایران است .