Thread Vergleiche mit 0, PHP gegen Perl und anderes... (71 answers)
Opened by rosti at 2012-12-29 13:07

topeg
 2012-12-30 22:02
#164543 #164543
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Für einen Web-Programmierer gibt es nicht so viele Anwendungsfälle. Für einen Webhoster schon. Damit ist es möglich In einem Prozess mehrere Interpreterinstanzen nebeneinander laufen zu lassen, ohne das sie sich stören können, zudem kann der Zugriff auf die Systemresourcen besser kontrolliert werden. Im Gegensatz zu einzelnen Prozessen ist die Kontrolle einfacher und die Kommunikation schneller.
Ein Beispiel sind in java geschriebene Webserver, welche JSP ausführen können. Es wäre schlecht, wenn die Server-Pages die selben Zugriffsrechte auf das System und den Servercode hätten wie dieser selber. Zudem sollten sie nur eingeschränkt auf das Dateisystem zugreifen können und sollten keine leistungshungrige Aktionen starten dürfen.

Ein Beispiel das auch für einen Web-Programmierer interessant ist. Nimm an, man hätte eine ausgefeilte Suche auf der Seite. Diese wandelt den Suchstring in Code und führt diesen aus. Um sicher zu gehen das nichts schlimmes passiert kann man versuchen alles aus dem Suchstring zu entfernen, oder zu "quoten" was gefährlich sein könnte. Aber dennoch könnte noch etwas übersehen werden. Hier kommt die Sandbox in Spiel. Man erlaubt nur ganz bestimmte Aktionen und Zugriffe, alles andere erzeugt einen Fehler. Auch wenn der Code gefährlich sein sollte, er kann nichts anrichten.
Oder man erlaubt Plugins, die ein Nutzer schreiben darf.
Wann immer ungeprüfter Code ausgeführt wird ist eine Sandbox, also ein Rechtemanagement im Interpreter, sehr praktisch.
Auf die Alternative hat GwenDragon schon hingewiesen. Man startet den Code in einem anderen Benutzeraccount, der sehr einschränkte Rechte auf das System hat. Nicht nur das man eine neue Interpterinstanz startet, mit all dem Speicherverbrauch, Systemzugriffen und Prozessorbelastungen, auch muss man die Kommunktionen durch eine Pipe oder Socket zwängen und dabei möglicherweise komplexe Datenstrukturen Serialisieren. Das kostet alles.

Über solche Probleme stolpert man aber recht selten. Wie gesagt für Webhoster ist solche in Feature in der Sprache ein absoluter Pluspunkt.

View full thread Vergleiche mit 0, PHP gegen Perl und anderes...