| 

.NET C# Java Javascript Exception

1
Meine Firma will ein Spiel auf einer Webseite erstellen, bei dem die Spieler darum kämpfen, die beste KI zu programmieren. Als Programmiersprachen wollen wir C# und (Iron)Python anbieten, die man über eine Textbox auf der Webseite eingeben kann und die dann auf dem Server laufen und die Spielfiguren steuern.

Wie können wir es 100% sicher hinkriegen, dass der Code seine Sandbox nicht verlässt (und keine Dateien löscht usw.)?
26.08.2009
rubens 69 2 3
3 Antworten
1
Was du vor hast ist nicht einfach. Grundsätzlich ist es richtig, dass du mit CAS und einer eigenen AppDomain ziemlich viel einschränken kannst. Pass nur genau mit Stack Overflows auf!! Wenn ein Spieler Code mit einer endlosen Rekursion auf den Server lädt und es dadurch zu einem Stack Overflow kommt, ist nicht nur die AppDomain am Ende, in der dieser Code läuft. Mir ist (seit .NET 2) keine pure Lösung in managed Code bekannt, die in einem solchen Fall etwas bringt.

Mein Tipp also: Angriffe mit Stack Overflows speziell testen!
07.09.2009
r.stropek 91 1 1
0
Also strenggenommen ist die .NET Code Access Security oder CAS ausreichend, um das zu gewährleisten. Viele wissen nicht, dass man .NET-Controls im Browser laufen lassen kann. Das macht auch von Low-Trust Gebrauch. Das Vorgehen für dich wäre, dass du eine eigene AppDomain erzeugst, in der der Fremdcode laufen kann. Diese AppDomain kannst du was Rechte angeht minimal konfigurieren. Sollte der Code in der Lage sein, hieraus auszubrechen, wäre das ein Bug in Microsofts .NET-Implementation.
26.08.2009
Leroy 315 2 5
0
Nebst AppDomain {} bietet sich auch IsolatedStorage{} an.
07.09.2009
stealth 61 1 1

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH