Dando permissões para o usuário do apache

2

Desenvolvi uma aplicação web que permite aos usuários fazer upload de imagens e transformá-las para depois baixá-las novamente transformadas. Obviamente, tive que conceder permissões de usuário do apache ao diretório em que os usuários podem fazer o upload:

$ chown root:www-data uploadFolder
$ chmod 1775 uploadFolder

Isso dá ao grupo apache todas as permissões, exceto a remoção.

O aplicativo cria um diretório para cada sessão de usuário dentro do diretório uploadFolder com 0700 permissões e salva as imagens do usuário dentro dele.

O uploadFolder está dentro do diretório do aplicativo.

Quando a imagem é carregada, ela é exibida diretamente (como um link) para o cliente.

Um trabalho crontab está executando um script a cada 20 minutos, que verifica quais sessões estão ativas e remove todos os arquivos e pastas dentro de uploadFolder que não correspondem a nenhuma sessão ativa.

Está funcionando bem há dois meses, mas não tenho certeza se isso pode ser perigoso para meu aplicativo, banco de dados ou outros sites no mesmo VPS.

Alguém sabe o risco de ser permissivo nesta situação?

Existe alguma alternativa para evitá-lo?

Esta é a configuração do meu site do Apache:

<VirtualHost *:80>
ServerName www.itransformer.es
ServerAlias itransformer.es *.itransformer.es
DocumentRoot /siteFolder
<Directory /var/www/itransformer-2.0/web>
   AllowOverride all
   Options -Indexes
</Directory>
</VirtualHost>

Adicionou este código de fragmento à configuração do site Apache: (isso deve evitar a leitura de .htaccess files)

<Directory /uploadFolder>
   AllowOverride none
   Options -Indexes
</Directory>
    
por Manolo 16.09.2013 / 14:24

1 resposta

1

Você deve primeiro entender que a segurança é um processo, e você precisa ter isso em mente em todos os estágios, e em todos os níveis, do seu desenvolvimento. Leia e entenda as falhas de segurança do aplicativo OWASP Top 10 e analise seu código pensando neles. globalmente (toda a sua aplicação) e localmente (as partes individuais da sua aplicação). Claro que existem outras falhas de segurança, então você deve se documentar sobre isso.

Não é possível dar bons conselhos sobre este tópico sem nenhum código e com apenas uma descrição muito geral e imprecisa como você está fazendo aqui. No seu caso eu gostaria especialmente de observar a travessia do diretório , XSS, etc, mas lembre-se de que o risco pode vir de qualquer lugar da sua aplicação .

Na prática, você provavelmente quer executar o apache em uma jaula chroot , e eu também Faça o upload das pastas com alguns nomes gerados aleatoriamente, em vez do nome fornecido pelos usuários (aparece a partir das atualizações da sua pergunta que você já está fazendo isso de fato). Ao todo, lembre-se de que apenas fará qualquer falha que você ainda possa ter mais dificuldade de explorar, mas não as impedirá completamente.

    
por 16.09.2013 / 15:35