Evitar que o PHP permita uploads de script php

2

Executando o Solaris / Apache / PHP.

Nossa base de usuários precisa ser capaz de fazer upload de arquivos para os servidores da web, portanto, precisamos ter os uploads de php ativados. O problema surge quando os usuários fornecem scripts de upload que não são restritos e um invasor carrega seus próprios dados. Muitas vezes, o invasor faz upload de seus próprios dados que deseja exibir no servidor da Web ou carrega outro script php que lhes dá mais acesso no sistema.

  • Existe uma maneira de evitar que o PHP carregue outros scripts php do lado do sistema (eu sei que os usuários podem fazer isso, mas não podem ter certeza de que irão)?
  • Quais são algumas das precauções gerais de segurança adotadas por outras pessoas ou as práticas recomendadas para lidar com a permissão de uploads de arquivos? Como podemos impedir que esses scripts sejam abusados?

Temos milhares de usuários, portanto verificar se cada script de upload (seja personalizado, wiki, etc.) é seguro parece quase impossível. Eu tenho um script que verifica os diretórios graváveis da web e procura ver se há restrições apropriadas de definição de .htaccess para esses diretórios, mas sistemas que possuem seus próprios sistemas de login que não são baseados em .htaccess / .htpasswd (wikis, etc). não vai usá-los, então esses scripts realmente não ajudam nesse sentido.

    
por Andrew Case 08.03.2012 / 20:14

1 resposta

1

What are some general security precautions that others take or best practice with handling the allowing of file uploads? How can we stop these scripts from being abused?

Hospede sua pasta de upload separada de qualquer um dos scripts / binários do aplicativo. Configure o Apache para que ele não execute nenhum código cgi / php / etc no diretório de upload. O ideal é hospedar os dados de upload em um diretório fora da webroot.

Como você está hospedando muitos usuários, use um servidor / módulo PHP para que o código de cada usuário opere sob seu próprio ID de usuário.

Além disso, você não pode realmente proteger uma pessoa capaz de publicar código em seu servidor. Se eles fizerem upload de código inseguro, eles verão as consequências. É simplesmente impossível ter 100% de proteção.

    
por 08.03.2012 / 20:25