Início‎ > ‎

Proteger os arquivos criados

Embora seja possível usar comandos Java para alterar as permissões de arquivos presentes no sistema de arquivos, as primitivas de criação de arquivos (dentre elas a java.io.File.createNewFile()) não permitem que sejam especificadas as permissões com as quais o arquivo deve ser criado. Ao criar um arquivo por meio de um programa Java, este será criado com as permissões padrão do sistema operacional. Para que a criação de arquivos seja feita de forma segura, a aplicação deve estar configurada para que os arquivos que crie tenham as permissões mais restritivas possível. Esta é uma configuração do sistema operacional e deve ser levada em conta quando da instalação da aplicação. Após a criação dos arquivos, deve-se verificar se as suas permissões estão de acordo com o esperado usando as APIs Java de manipulação de arquivos.

Outra opção é utilizar os métodos setExecutable(), setReadable() e setWritable() da classe File. Se possível, o arquivo deve ser configurado com acesso apenas para o proprietário através do parâmetro ownerOnly .

A política ideal para a criação de arquivos é configurar a aplicação (e o sistema operacional, se necessário) de forma que todos os arquivos criados estejam inacessíveis. Depois de criado o arquivo, a aplicação deverá então manipular suas permissões para adequar as configurações. Em aplicações web que executem sempre sob o mesmo usuário, é importante que apenas este usuário tenha acesso aos arquivos criados.

No caso de aplicações que troquem informações via arquivos, é importante que as permissões de acesso sejam:

  1. A aplicação que escreve o arquivo deve ter apenas permissão de escrita no diretório e/ou arquivo. Não há necessidade de permissão de leitura para esta aplicação na maioria dos casos.
  2. A aplicação que lê o arquivo deve ter permissão apenas de leitura no diretório e/ou arquivo. Deve-se evitar o uso de arquivos ondem possam escrever várias aplicações, cada aplicação deve escrever um arquivo independente.
Quando houver a transmissão de arquivos numa rede, estes devem ser criptografados. O uso de protocolos seguros como SSL ou SSH permite garantir o sigilo e a integridade dos dados transmitidos. Se houver a necessidade de proteção dos dados enquanto armazenados em disco (ou outras mídias), é importante que a própria aplicação se encarregue de criptografá-los para garantir que os dados nunca sejam armazenados em claro. Isto poderia ocorrer caso houvesse um outro processo/aplicação encarregado da criptografia dos dados: os dados ficam desprotegidos no intervalo entre a gravação do arquivo e o fim do processo de criptografia. Além disto, o processo de criptografia terá também de se preocupar em eliminar os dados em claro que ficam no disco mesmo depois do arquivo ter sido apagado.
Comments