كيف يمكنني تقييد / منع تنفيذ كود .NET على الإنترنت؟

StackOverflow https://stackoverflow.com/questions/2230241

  •  19-09-2019
  •  | 
  •  

سؤال

أقوم بتطوير سلسلة من مكتبات Class .Net ولا أريدها تشغيلها من موقع ويب. وهذا هو، يمكن للمستخدمين فقط استخدام / استدعاء مكتباتي من خلال تطبيقات سطح مكتب ويندوز. على سبيل المثال، لا أريد أن يتمكن المستخدمون من استخدام هذه المكتبات في تطبيق Web ASP.NET، على موقع ويب. هل هناك طريقة لتحقيق ذلك؟

هل كانت مفيدة؟

المحلول

يمكنك منع رمزك من تشغيل في AppDomain ASP.NET جانب الخادم عن طريق التحقق مما إذا كان HttpRuntime.AppDomainAppVirtualPath ليس null ورمي استثناء.

ومع ذلك، فإن ذلك لن يمنع شخص ما من تشغيل تطبيقك في تطبيق Appdomain منفصل من ASP.NET، وبالتأكيد لن يمنع شخص ما من Runnng التطبيق كخدمة وكشفه على ASP.NET باستخدام WCF أو الأنابيب المسماة.

لماذا تحاول القيام بذلك؟

تعديل: للإجابة على تعليقك، من المستحيل أيضا القيام بذلك تماما. يمكنك التحقق من رأس المضيف، ويمكن لشخص ما هزيمةها باستخدام SimpleWorkerRequest.
بالإضافة إلى ذلك، يمكن للضرب أي شيء عن طريق تحرير الجمعية. (لا Obfuscator مثالية)

نصائح أخرى

لا. حتى لو كنت تمنع مكتبتك من الركض تحت IIS، لا يزال بإمكان شخص ما تشغيل تطبيق سطح المكتب مع مكتبتك، والتواصل معها من IIS.

لا ليس بالفعل كذلك.

ومع ذلك، اعتمادا على ما هو تطبيقك قد تكون قادرا على التشط في تطبيقه للاستخدام عبر الإنترنت. إذا كنت تستخدم اسمه المسمى Mutexes، فيمكنك التأكد من أن عملية واحدة فقط تبدأ في أي وقت واحد. مماثلة لبدء مثيل 1 من تطبيق سطح المكتب، تأكد من أن جميع المكالمات إلى Dowork () على سبيل المثال هي متتابعة.

هذا يعني أن استخدام الويب، لم يتمكنوا من إجراء مكالمات متكررة. لكنه يعتمد على كيفية تصور استخدامه في تطبيق سطح المكتب.

تماما مثل الحلول الأخرى غير آمنة للغاية، ولكن يمكنك التحقق مما إذا كانت حلقة الرسالة قيد التشغيل Application.messageloop. والتي يجب أن تكون عادة صحيحة لتطبيقات WinForms ولكن ليس لتطبيقات الويب.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top