Os scripts de extensão devem ser executados em uma sandbox?


11

Em particular, trata-se de extensões de jogos escritas em lua (luajit-2.0). Eu estava pensando se deveria restringir o que esses scripts podem fazer e cheguei à conclusão de que provavelmente não deveria:

  • É difícil de acertar. Parece bobagem, mas é provável que minha caixa de areia acabe vazando de qualquer maneira.

  • O único benefício que eu conseguia pensar seria dar aos usuários uma sensação de segurança ao executar scripts de terceiros.

  • As desvantagens seriam que é incrivelmente irritante para os criadores de extensões. Ou seja, por enquanto, eu mesmo (o conteúdo do jogo será principalmente baseado em scripts).

A razão pela qual estou perguntando isso agora antes que eu realmente tenha algo apresentável é que adicionar uma caixa de areia no início é fácil, mas imporia essas restrições irritantes a mim também. No entanto, se eu continuar com isso e depois decidir que preciso de uma caixa de areia, afinal, vou ter problemas (eu teria que reescrever os scripts que já estão lá ou introduzir alguma forma de sistema de gerenciamento de confiança o que parece ser mais problema do que vale a pena).


Para que tipo de jogo? Para um produto pronto para venda, vendido para 100.000 clientes, e todo mundo que gosta pode escrever scripts para ele? Ou para um produto vendido 50 vezes e você é o único que fornece scripts adicionais?
Doc Brown

Respostas:


2

Acredito que tanto no desenvolvimento de um videogame, que em qualquer desenvolvimento de software de dimensões médias-grandes, o programador sempre tentará criar uma troca de camadas ou opções de configuração livre para futuras funcionalidades.

Lua é uma linguagem que permite que essas opções sejam fáceis de implementar para o usuário final e para o desenvolvedor, mas isso não significa que é fácil planejar seu espaço de trabalho, com a experiência que posso lhe dizer hoje, também pode ocorrer uma multiplicação simples, se o usuário final tiver permissão para personalizar seu comportamento.

Se focarmos no que um jogo de sandbox tem a oferecer, podemos entender que o uso final pode ser de lâmina dupla, permitindo que o jogo se torne não linear, interessante e divertido , mas, ao mesmo tempo, não seja um plano fácil seus limites na área de trabalho.

Do ponto de vista da segurança, parece fantástico! um bom ambiente de teste para extensões deve ser implementado em todos os tipos de software.

Concluindo, posso dizer que, embora pareça que não valha a pena fazer uma sandbox para o seu produto, na verdade o desenvolvedor ou o grupo de desenvolvedores obterá mais benefícios, porque, como o usuário final pode configurar facilmente seu ambiente no desenvolvedor, também pode levar menos tempo para faça alterações na estrutura funcional. Estou firmemente convencido de que um jogo sandbox (como na escalabilidade de software) permite uma evolução criativa de suas extensões e uma evolução natural de suas funcionalidades.


1
Eu acho que você está usando 'sandbox' no sentido de jogos, mas o OP estava usando no sentido de segurança. Eles parecem ter dois conceitos não relacionados.
precisa saber é

2

É difícil acertar

Na verdade, não é muito difícil criar uma caixa de proteção básica com lista de permissões de funções e adicionar implementações personalizadas de funções potencialmente inseguras. Esta questão SO parece ser um bom ponto de partida.

mas as chances são de que minha caixa de areia acabe vazando de qualquer maneira

Eu acho que seria suficiente começar a fornecer alguma segurança básica: restringir o acesso a arquivos fora de alguns diretórios especiais. De qualquer maneira, não existem aplicativos 100% seguros. Pense no que pode acontecer se alguém escrever alguma extensão maliciosa: os usuários provavelmente o culparão como desenvolvedor. Se você planeja dar a alguém a chance de escrever uma extensão, precisará de alguma segurança. Se é só você - está tudo bem.

O único benefício que eu conseguia pensar seria dar aos usuários uma sensação de segurança ao executar scripts de terceiros.

Essa é exatamente a razão pela qual você deve fazer o sandbox e não é um argumento válido contra o sandbox.

As desvantagens seriam que é incrivelmente irritante para os criadores de extensões

Tenho alguma experiência em scripts de jogos e não acho irritante trabalhar sozinho em um ambiente de área restrita. O que me incomoda é a falta de funcionalidade relacionada ao jogo, como APIs específicas de objetos no jogo ou implementações ruins desses.

Pode ajudar se você olhar para o mecanismo LOVE como um bom exemplo (se ainda não o fez), especialmente o tutorial sobre a API do filesytem .

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.