Respostas:
Uma caixa de areia ou caixa de areia é um recipiente baixo e largo ou uma depressão rasa cheia de areia em que as crianças podem brincar. Muitos proprietários com crianças constroem caixas de areia em seus quintais porque, ao contrário de muitos equipamentos de playground, elas podem ser construídas de forma fácil e barata. Uma "caixa de areia" também pode denotar uma mina de areia a céu aberto.
Bem, uma caixa de areia de software não é diferente de uma caixa de areia construída para uma criança brincar. Ao fornecer uma caixa de areia para uma criança, simulamos o ambiente de um playground real (em outras palavras, um isolated environment
), mas com restrições sobre o que a criança pode fazer. Porque não queremos que uma criança seja infectada ou não queremos que ela cause problemas aos outros. :) Seja qual for o motivo, queremos apenas colocar restrições sobre o que a criança pode fazer Security Reasons
.
Chegando agora à nossa sandbox de software, deixamos qualquer software (filho) executar (jogar), mas com algumas restrições sobre o que ele (ele) pode fazer. Podemos nos sentir seguros e protegidos sobre o que o software em execução pode fazer.
Você viu e usou um software antivírus. Certo? Também é uma espécie de caixa de areia. Ele coloca restrições sobre o que qualquer programa pode fazer. Quando uma atividade maliciosa é detectada, ele para e informa ao usuário que "este aplicativo está tentando acessar recursos fulano de tal. Deseja permitir?".
Baixe um programa chamado sandboxie e você pode ter uma experiência prática de um sandbox. Usando este programa, você pode executar qualquer programa em ambiente controlado.
As setas vermelhas indicam alterações que fluem de um programa em execução para o computador. A caixa com o rótulo Disco rígido (sem sandbox) mostra as alterações de um programa em execução normal. A caixa com o rótulo Disco rígido (com sandbox) mostra as alterações feitas por um programa em execução no Sandboxie. A animação mostra que o Sandboxie é capaz de interceptar as mudanças e isolá-las dentro de uma sandbox, representada como um retângulo amarelo. Também ilustra que agrupar as alterações torna mais fácil excluir todas de uma vez.
Agora, do ponto de vista do programador, o sandbox está restringindo a API permitida para o aplicativo. No exemplo do antivírus, estamos limitando a chamada do sistema (API do sistema operacional).
Outro exemplo seria arenas de codificação online como o topcoder. Você envia um código (programa), mas ele é executado no servidor. Para as safety
do servidor, devem limitar o nível de acesso da API do programa. Em outras palavras, eles precisam criar uma sandbox e rodar seu programa dentro dela.
Se você tiver um sandox adequado, poderá executar um arquivo infectado por vírus e interromper toda a atividade maliciosa do vírus e ver por si mesmo o que ele está tentando fazer. Na verdade, esta será a primeira etapa de um pesquisador de antivírus.
Essa definição de sandboxing basicamente significa ter ambientes de teste (integração de desenvolvedor, garantia de qualidade, estágio, etc). Esses ambientes de teste imitam a produção, mas não compartilham nenhum dos recursos de produção. Eles têm servidores, filas, bancos de dados e outros recursos completamente separados.
Mais comumente, tenho visto sandboxing se referir a algo como uma máquina virtual - isolar algum código em execução em uma máquina para que não possa afetar o sistema básico.
Para um exemplo concreto: suponha que você tenha um aplicativo que lida com transferências de dinheiro. No ambiente de produção, dinheiro real é trocado. No ambiente de sandbox, tudo funciona exatamente da mesma forma, mas o dinheiro é virtual. É para fins de teste.
O Paypal oferece esse ambiente de sandbox, por exemplo.
Mais frequentemente, nos referimos à outra caixa de areia .
De qualquer forma, sandbox geralmente significa um ambiente isolado . Você pode fazer o que quiser na sandbox, mas seu efeito não se propagará para fora da sandbox. Por exemplo, no desenvolvimento de software, isso significa que você não precisa mexer em coisas /usr/lib
para testar sua biblioteca, etc.