Sollten Erweiterungsskripte in einer Sandbox ausgeführt werden?


11

Hierbei handelt es sich insbesondere um in lua (luajit-2.0) geschriebene Spielerweiterungen. Ich überlegte, ob ich die Möglichkeiten dieser Skripte einschränken sollte, und kam zu dem Schluss, dass ich das wahrscheinlich nicht tun sollte:

  • Es ist schwer, richtig zu machen. Klingt albern, aber wahrscheinlich wird mein Sandkasten trotzdem undicht.

  • Der einzige Vorteil, den ich mir vorstellen kann, besteht darin, den Benutzern ein gewisses Sicherheitsgefühl beim Ausführen von Skripten von Drittanbietern zu geben.

  • Die Nachteile wären, dass es für Erweiterungsschreiber einfach unglaublich nervig ist. Das bin vorerst ich selbst (Spielinhalte werden meistens mit Skripten erstellt).

Der Grund, warum ich dies jetzt frage, bevor ich tatsächlich etwas Vorzeigbares habe, ist, dass das frühzeitige Hinzufügen eines Sandkastens einfach ist, mir aber auch die nervigen Einschränkungen auferlegen würde. Wenn ich jedoch zuerst weitermache und später entscheide, dass ich doch eine Sandbox benötige, werde ich auf Probleme stoßen (entweder müsste ich die bereits vorhandenen Skripte neu schreiben oder eine Art Vertrauensverwaltungssystem einführen das scheint mehr Ärger zu sein als es wert ist).


Für welche Art von Spiel? Für ein Produkt von der Stange, das an 100.000 Kunden verkauft wird, und jeder, der es mag, kann Skripte dafür schreiben? Oder für ein Produkt, das 50 Mal verkauft wurde und Sie sind der einzige, der zusätzliche Skripte bereitstellt?
Doc Brown

Antworten:


2

Ich glaube, dass sowohl die Entwicklung eines Videospiels, bei dem der Programmierer bei jeder Softwareentwicklung mit mittleren bis großen Dimensionen immer versuchen wird, einen Ebenenaustausch oder freie Optionen für zukünftige Funktionen zu erstellen.

Lua ist eine Sprache, mit der diese Optionen für den Endbenutzer und den Entwickler einfach zu implementieren sind. Dies bedeutet jedoch nicht, dass es einfach ist, Ihren Arbeitsbereich zu planen. Mit der Erfahrung, die ich Ihnen heute sagen kann, kann auch eine einfache Multiplikation auslaufen. wenn der Endbenutzer sein Verhalten anpassen darf.

Wenn wir uns auf das konzentrieren, was ein Sandbox-Spiel zu bieten hat, können wir verstehen, dass der Endverbrauch ein Double-Blade sein kann, wodurch das Spiel nichtlinear, interessant und unterhaltsam wird , aber gleichzeitig kein einfacher Plan ist ihre Grenzen im Arbeitsbereich.

Aus Sicherheitsgründen klingt es fantastisch! Eine gute Testumgebung für Erweiterungen sollte in allen Arten von Software implementiert werden.

Zusammenfassend kann ich sagen, dass, obwohl es den Anschein hat, dass es sich nicht lohnt, eine Sandbox für Ihr Produkt zu erstellen, der Entwickler oder die Gruppe von Entwicklern tatsächlich mehr Vorteile erhält, da der Endbenutzer Ihre Umgebung beim Entwickler leicht konfigurieren kann, kann dies auch weniger Zeit in Anspruch nehmen Änderungen an der Funktionsstruktur vornehmen. Ich bin fest davon überzeugt, dass ein Sandbox-Spiel (wie bei der Skalierbarkeit der Software) eine kreative Weiterentwicklung seiner Erweiterungen und eine natürliche Weiterentwicklung seiner Funktionen ermöglicht.


1
Ich denke, Sie verwenden "Sandbox" im Sinne von Spielen, aber das OP hat sie im Sinne von Sicherheit verwendet. Sie scheinen zwei ziemlich unabhängige Konzepte zu sein.
BDSL

2

Es ist schwer, richtig zu machen

Es ist eigentlich nicht sehr schwierig, eine einfache Sandbox mit einer Whitelist von Funktionen zu erstellen und dann benutzerdefinierte Implementierungen potenziell unsicherer Funktionen hinzuzufügen. Diese SO-Frage scheint ein guter Ausgangspunkt zu sein.

Aber es besteht die Möglichkeit, dass mein Sandkasten sowieso undicht wird

Ich denke, es würde ausreichen, um einige grundlegende Sicherheitsvorkehrungen zu treffen: den Zugriff auf Dateien außerhalb einiger spezieller Verzeichnisse einzuschränken. Es gibt sowieso keine 100% sicheren Anwendungen. Überlegen Sie, was passieren kann, wenn jemand eine böswillige Erweiterung schreibt: Benutzer werden Sie wahrscheinlich als Entwickler beschuldigen. Wenn Sie jemandem die Möglichkeit geben möchten, eine Erweiterung zu schreiben, benötigen Sie möglicherweise Sicherheit. Wenn es nur Sie sind, ist es in Ordnung, wie es ist.

Der einzige Vorteil, den ich mir vorstellen kann, besteht darin, den Benutzern ein gewisses Sicherheitsgefühl beim Ausführen von Skripten von Drittanbietern zu geben.

Dies ist genau der Grund, warum Sie Sandboxing betreiben sollten, und es ist kein gültiges Argument gegen Sandboxing.

Die Nachteile wären, dass es für Erweiterungsschreiber einfach unglaublich nervig ist

Ich habe einige Erfahrung mit Game Scripting und finde es nicht ärgerlich, alleine in einer Sandbox-Umgebung zu arbeiten. Was mich ärgert, ist der Mangel an spielbezogenen Funktionen, wie bestimmte APIs von In-Game-Objekten oder schlechte Implementierungen solcher.

Es kann hilfreich sein, wenn Sie sich die LOVE- Engine als gutes Beispiel ansehen (falls Sie dies noch nicht getan haben), insbesondere das Tutorial zur Dateisystem-API .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.