É um furo de segurança de arquivo gravável?

1

Se eu tenho um script php que está lendo / escrevendo em um arquivo, isso é uma falha de segurança?

Essencialmente eu tenho um formulário que é apenas salvar e restaurar dados de um arquivo para que eu não tenha que lidar com um banco de dados. Isso funcionou muito bem na minha máquina de desenvolvimento local e eu ia colocá-lo em uma máquina mais pública para compartilhar com outras pessoas.

Existe algum risco real de segurança com apenas o arquivo sendo gravável pelo meu script php?

    
por hortitude 14.12.2009 / 22:03

3 respostas

3

Se o nome do arquivo não depender da entrada do usuário, haverá pouco risco. Se estiver, você precisa ter certeza de que a parte dependente do usuário está bem higienizada, removendo todos os caracteres potencialmente perigosos, como., Ou.

Outros mencionaram um possível DOS preenchendo o disco; mas você também corre esse risco com um banco de dados.

Existe então outro risco, que não é uma vulnerabilidade em si, mas poderia servir como um. O invasor pode usar esse método para criar conteúdo de sua escolha no servidor e usá-lo para explorar uma vulnerabilidade executando-a. Mais comumente, o problema se apresenta se você permitir que o usuário crie um arquivo .php e permita que ele seja acessado pelo servidor. O usuário só precisa abrir o link para fazer o que quiser.

A maneira mais segura de evitar esse problema é colocar todos os arquivos enviados fora do diretório do servidor. Isso significa que você deve servir os arquivos através de um script próprio, não diretamente para o exterior. Geralmente no Unix você tem seus scripts php sob / var / www / html. Basta você escrever um script em / var / www / uploads, por exemplo, e não há como o servidor web ir até lá, a menos que você tenha feito algo estúpido com o seu httpd.conf.

Se você não puder controlar isso, use um .htaccess para limitar o acesso a esse diretório específico e / ou certifique-se de que os arquivos não possam ser executados como PHP ou inclusões do lado do servidor (.shtml) sempre anexando um extensão segura, como .html ou .txt.

    
por 14.12.2009 / 22:55
1

Além do risco DoS, você precisa ter certeza de que o conteúdo está limpo para que, quando o PHP o ler de volta, os dados não sejam interpretados como código. Uma vantagem de usar o SQL é que limpar os dados SQL é um processo razoavelmente padrão e bem compreendido, enquanto não tenho certeza do que é o estado da arte para o PHP.

    
por 14.12.2009 / 22:38
0

Cuidado com o potencial do DoS pelo respeito do script ser capaz de preencher o sistema de arquivos para o qual ele possui acesso de gravação.

    
por 14.12.2009 / 22:09

Tags