Czy skrypty rozszerzeń powinny być uruchamiane w piaskownicy?

11

W szczególności chodzi o rozszerzenia gier napisane w lua (luajit-2.0). Zastanawiałem się, czy powinienem ograniczyć możliwości tych skryptów i doszedłem do wniosku, że prawdopodobnie nie powinienem:

  • Trudno jest dobrze zrozumieć. Brzmi głupio, ale są szanse, że moja piaskownica i tak skończy się nieszczelna.

  • Jedyną korzyścią, jaką mogłem wymyślić, było zapewnienie użytkownikom poczucia bezpieczeństwa podczas uruchamiania skryptów innych firm.

  • Wadą byłoby to, że jest to po prostu niesamowicie denerwujące dla autorów rozszerzeń. To na razie ja (zawartość gry będzie głównie skryptowana).

Powodem, dla którego pytam o to teraz, zanim rzeczywiście mam coś prezentowalnego, jest to, że wczesne dodanie piaskownicy jest łatwe, ale nałożyłoby również na mnie te irytujące ograniczenia. Jeśli jednak najpierw będę to kontynuować, a potem zdecyduję, że w końcu potrzebuję piaskownicy, napotkam problemy (albo będę musiał przepisać skrypty, które już tam są, albo wprowadzę jakąś formę systemu zarządzania zaufaniem co wydaje się bardziej kłopotliwe niż warte).

Sześcienny
źródło
Do jakiej gry? W przypadku gotowego produktu, sprzedanego 100 000 klientom i każdy, kto lubi, może pisać dla niego skrypty? A może produkt sprzedany 50 razy, a ty jesteś jedynym, który udostępnia dodatkowe skrypty?
Doc Brown

Odpowiedzi:

2

Uważam, że zarówno rozwój gry wideo, który w każdym opracowaniu oprogramowania o średnich i dużych wymiarach, programista zawsze będzie próbował stworzyć wymianę warstw lub dowolne opcje dla przyszłej funkcjonalności.

Lua to język, który umożliwia łatwe wdrażanie tych opcji dla użytkownika końcowego i programisty, ale nie oznacza to, że łatwo jest zaplanować przestrzeń roboczą, z doświadczeniem, które mogę wam powiedzieć dzisiaj, również proste mnożenie może przeciekać, jeśli użytkownik końcowy może dostosować swoje zachowanie.

Jeśli skupimy się na tym, co ma do zaoferowania gra typu sandbox, możemy zapisać, że ostatecznym zastosowaniem może być podwójne ostrze, dzięki czemu gra może stać się nieliniowa, interesująca i zabawna , ale jednocześnie nie jest łatwym planem ich ograniczenia w obszarze roboczym.

Z punktu widzenia bezpieczeństwa brzmi fantastycznie! dobre środowisko testowe dla rozszerzeń, powinno być zaimplementowane we wszystkich typach oprogramowania.

Podsumowując, mogę powiedzieć, że chociaż wydaje się, że nie warto tworzyć piaskownicy dla Twojego produktu, w rzeczywistości programista lub grupa programistów uzyska więcej korzyści, ponieważ ponieważ użytkownik końcowy może łatwo skonfigurować środowisko u programisty, może również krócej dokonać zmian w strukturze funkcjonalnej. Jestem głęboko przekonany, że gra typu sandbox (podobnie jak w skalowalności oprogramowania) pozwala na kreatywną ewolucję ich rozszerzeń i naturalną ewolucję jej funkcjonalności.

RTOSkit
źródło
1
Myślę, że używasz „piaskownicy” w sensie gier, ale OP używał go w sensie bezpieczeństwa. Wydaje się, że są to dwie dość niezwiązane koncepcje.
bdsl
2

Trudno jest dobrze zrozumieć

Utworzenie podstawowego piaskownicy z białą listą funkcji, a następnie dodanie niestandardowych implementacji potencjalnie niebezpiecznych funkcji nie jest wcale trudne . To SO pytanie wydaje się dobrym punktem wyjścia.

ale są szanse, że moja piaskownica i tak będzie nieszczelna

Myślę, że wystarczy zacząć od zapewnienia podstawowych zabezpieczeń: ograniczenia dostępu do plików poza niektórymi specjalnymi katalogami. W każdym razie nie ma czegoś takiego jak w 100% bezpieczne aplikacje. Zastanów się, co może się stać, jeśli ktoś napisze złośliwe rozszerzenie: użytkownicy prawdopodobnie obwinią Cię jako programistę. Jeśli planujesz dać komuś szansę na napisanie rozszerzenia, w końcu będziesz potrzebować bezpieczeństwa. Jeśli to tylko ty - jest OK.

Jedyną korzyścią, jaką mogłem wymyślić, było zapewnienie użytkownikom poczucia bezpieczeństwa podczas uruchamiania skryptów innych firm.

To jest właśnie powód, dla którego powinieneś robić piaskownicę i nie jest to prawidłowy argument przeciwko piaskownicu.

Wadą byłoby to, że jest to po prostu niesamowicie denerwujące dla autorów rozszerzeń

Mam pewne doświadczenie w pisaniu skryptów do gier i nie jest dla mnie denerwujące pracować w środowisku piaskownicy. Denerwuje mnie brak funkcji związanych z grą, takich jak określone interfejsy API obiektów w grze lub ich słabe implementacje.

Może to pomóc, jeśli spojrzysz na silnik LOVE jako dobry przykład (jeśli jeszcze tego nie zrobiłeś), zwłaszcza samouczek dotyczący interfejsu API systemu plików .

scriptin
źródło