Segurança

Ruby tem um modelo de segurança bastante simples, similar ao de Perl e JavaScript, chamado data tainting ("corrupção de dados"). Qualquer dado vindo de "ambiente possivelmente hostil" (dados fornecidos pelo usuário, principalmente), é marcado como "corrupto" (tainted), e esse dado não pode mais ser usado para certas operações, como por exemplo, executar um comando externo, inadvertidamente. A variável global $SAFE indica o nível de segurança. A seguinte tabela indica os níveis existentes:

  • 0 - (padrão) strings de streams, variáveis de ambiente (env), e ARGV são corruptas
  • 1 - nenhuma operação perigosa com objetos corruptos é permitida
  • 2 - operações com processos ou arquivos são proibidas
  • 3 - todos os objetos criados são corruptos
  • 4 - modificação de variáveis globais (não corruptas) proibida; saída de dados direta proibida

A variável $SAFE só pode ser incrementada, nunca decrementada.

Referências:

  • Seção "Locking Ruby in the Safe" do livro Programming Ruby
  • Manual de segurança de Perl ("man perlsec")

topo da página

<< Página Anterior | índice | Próxima Página >>
Apostilas de Ruby e RGSS

nossos tutoriais

navegue

livros recomendados