Wie kann ich beschränken / im Internet .net Codeausführung verhindern?
-
19-09-2019 - |
Frage
ich eine Reihe von .NET-Klassenbibliotheken entwickeln, und ich will mich nicht von einer Website laufen. Das heißt, dass Benutzer nur meine Bibliotheken durch Anwendungen Windows-Desktop verwenden / nennen. Zum Beispiel möchte ich nicht die Benutzer diese Bibliotheken in einer ASP.NET Web-Anwendung zu verwenden, um die Lage sein, auf einer Website. Gibt es einen Weg, um dieses?
zu erreichenLösung
Sie können den Code vom Laufen in einem serverseitigen ASP.Net AppDomain verhindern, indem geprüft wird, ob HttpRuntime.AppDomainAppVirtualPath
nicht null
ist und eine Ausnahme zu werfen.
Sie jedoch, dass nicht jemand aus laufen Ihre Anwendung in einer separaten AppDomain von ASP.Net zu stoppen, und es wird sicherlich nicht Anschlag jemand aus der App als Service runnng und es ASP.Net mit WCF oder dem Namen aussetzt Rohren.
Warum versuchen Sie, dies zu tun?
Bearbeiten : Kommentar zu beantworten, die auch unmöglich ist, perfekt zu tun.
Sie könnten die HOST-Header überprüfen, und jemand könnte es SimpleWorkerRequest
mit besiegen.
Darüber hinaus kann alles durch Bearbeiten der Versammlung geschlagen werden. (No obfuscator ist perfekt)
Andere Tipps
Nein. Auch wenn die Ausführung unter IIS Ihre Bibliothek zu stoppen ist, jemand noch eine Desktop-Anwendung mit Ihrer Bibliothek laufen konnte, und mit ihm kommuniziert von IIS.
Nein, nicht wirklich.
Allerdings, je nachdem, was Ihre Anwendung ist Sie in der Lage sein, kann es die Anwendung für den Online-Einsatz zu lähmen. Wenn Sie benannte Mutex verwenden können Sie sicherstellen, nur 1 Betrieb jemals zu einem beliebigen Zeitpunkt gestartet wird. Ähnliche 1 Instanz von einer Desktop-Anwendung zu starten, stellen Sie sicher, dass alle Anrufe zu DoWork () beispielsweise sequentiell sind.
Dies bedeutet, dass das Web, können sie nicht wiederholt Anrufe tätigen. Aber es ist davon abhängig, wie Sie es die Verwendung in einer Desktop-Anwendung ins Auge fassen.
So wie die anderen Lösungen nicht sehr sicher, aber Sie könnten überprüfen, ob eine Nachricht Schleife läuft Application.MessageLoop das in der Regel gilt für WinForms-Anwendungen, aber nicht für Web-Anwendungen sein sollte.