Wie erstellen sandbox in C# für die externen Prozess?
How to create sandbox in C# für die externen Prozess?
Als sandbox verstehe ich eine Umgebung für den Prozess starte ich von C#, dass stop, das Verfahren zu stören, sonst etwas -, kernel -, system Variablen, system-Konfiguration, Speicher, registry, Festplatten, hardware, anderen Ort als Startpunkt und so weiter.
Ich will das platzieren von ausführbarem an einem Ort und sicher sein, dass dieser Ort ist nur die Stelle, die geändert werden können, die von diesem Prozess. Darüber hinaus ausführbare Datei kann geschrieben werden, in C, C++, C# und etc.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie nur wollte, um verwalteten code ausführen, ist es relativ einfach zu erstellen Sie eine Sandbox-Umgebung mit einer AppDomain w/einer eingeschränkten Berechtigungen:
Aber sobald Sie die Tür öffnen, um unmanaged/unsafe code sind alle Wetten ab, und es wird sehr schwer zu sichern 3rd-party-code. Wie bereits erwähnt, Sie haben im Grunde erstellen Sie einen shim zwischen dem ausführen von code und das OS zu beschränken, was Sie tun können, es sei denn, es ist ausreichend, um es unter einem eingeschränkten Benutzer und verlassen Sie sich auf ACLs/UAC allein um Sie zu schützen.
HINWEIS: das code-Beispiel ist kein Beispiel arbeiten, nur eine Idee wie der code Aussehen würde. Einige Tricks w/Beweise und AppDomainSetup wird wahrscheinlich notwendig sein, und Sie sollten auf jeden Fall forschen/testen Sie das heck aus es zu überlegen, die Auswirkungen auf die Sicherheit. Hier ist ein guter Artikel zum Thema: http://msdn.microsoft.com/en-us/magazine/cc163701.aspx
Mit Sandboxie als ein Beispiel von dem, was ich denke, Sie werden wollen, zu erreichen, zu einem gewissen Grad. IMHO, Sie werden nicht in der Lage, dies zu tun in Reine verwalteten code.
Wenn Sie wollen in der Lage sein zu begrenzen, was die Aktionen und die Auswirkungen einer Anwendung unabhängig davon, ob es ist ein managed oder native-oder auch Java-Anwendung. Die Implikation ist, dass Sie brauchen, um zu überwachen, jede Handlung, die durch die Anwendung und nehmen Sie die entsprechenden Maßnahmen, um sicherzustellen, dass es keine Auswirkungen auf Ihr system haben. Die entsprechende Maßnahme könnte bedeuten, dass Sie leiten Sie die Anwendung schreiben, um einen alternativen Speicherort auf der Festplatte haben, schreiben Sie eine virtualisierte registry, so dass der eigentliche Registrierung ist nicht betroffen etc. etc. Alle diese erfordern eine Menge von low-level-Arbeit, die verwalteten code nicht heute stellen.
Beachten Sie, ich sagte reinem managed-code, man könnte natürlich Interop-Dienste verwenden, etc. nutzen unmanaged Umsetzung bestimmter Bereiche des Codes, oder Sie können verwaltete C++. Jedoch, abhängig von den genauen details von dem, was Sie möchten, dass Ihre sandbox zu tun, werden Sie wahrscheinlich benötigen, um Umsetzung ein kernel-Modus-Treiber, um sicherzustellen, dass Sie hinreichend virtualisieren Umgebung für die Sandbox-user-mode-Anwendungen.