Ich möchte die Dynamic Language Runtime (DLR) so hosten, dass Benutzer, die beliebige Skripte ausführen, den Prozess nicht herunterfahren können?
Die DLR-Hostingspezifikation beschreibt, wie der DLR in einer separaten ApplicationDomain gehostet wird. Dies ermöglicht das Herunterfahren und Entladen einer Script-Laufzeit und die Einschränkung bestimmter Operationen durch CAS (z. B. kann ich den Dateisystemzugriff einschränken oder die Verwendung von Reflektion verbieten).
Aber gibt es auch Möglichkeiten, zum Beispiel: - Beschränken Sie die maximale Speicherkapazität eines Skripts? - die Anzahl der Threads beschränken, die von einem Skript erstellt werden? - Deadlock-Skripte erkennen?
Ich denke, dass eine solch feinkörnige Kontrolle mit der nicht verwalteten .net-Hosting-API möglich ist wurde für SQL Server entwickelt. Ist das die Richtung zu gehen? Gibt es Open-Source-Projekte für diese Art von allgemeinem .net-Sandboxing?
Hier sind ein paar nützliche Hinweise, die ich gefunden habe:
Sieh dir Terrarium an - es ist ein Spiel, in dem du deine eigenen autonomen Kreaturen in einer .NET-Sprache erstellst, und sie " Sie wurden zu anderen vernetzten Computern teleportiert, zusammen mit den Assemblies, in denen sie beschrieben sind. Das Ziel ist es, dass dein Tier das gesamte Ökosystem übernimmt, entweder indem es alles andere umbringt oder indem es Nahrungsressourcen strategisch verwaltet.
Wie ich mich erinnere, wird jedes Tier, das mehr als 0.n Sekunden "denkt" oder n kb Speicher verbraucht, gelöscht.
Tags und Links dynamic-language-runtime ironpython ironruby