Use funções de FTP para garantir Uploads de Arquivos Seguros

É bastante comum para aplicações web para permitir aos usuários fazer upload de arquivos por uma razão ou outra. Você precisa se certificar esses envios são seguros. Por exemplo, algumas placas de mensagem permitem aos usuários fazer upload de imagens pequenas ou avatares que são mostrados ao lado de cada uma das mensagens do usuário. Outros aplicativos permitem que você fazer upload de arquivos de dados para análise.

Você pode usar built-in do PHP fopen () função, que abre automaticamente um fluxo para um arquivo ou URL que permite aos usuários fazer upload de arquivos. Infelizmente, este método está maduro para exploração por usuários mal-intencionados que podem usá-lo para fazer upload de arquivos de servidores remotos em seu servidor web.

Prevenir este tipo de exploração requer que você desativar duas configurações em php.ini: register_globals e url_fopen. Desativando essas configurações impede que os usuários usando upload de arquivos integrado do PHP sem você permitir explicitamente que a funcionalidade.

Depois de desativar essas duas funções em php.ini, você ainda precisa para permitir aos usuários fazer upload de arquivos. Use FTP conjunto de funções do PHP, um método muito mais seguro do que fopen (), para permitir aos usuários fazer upload de arquivos.

Você pode usar as funções de FTP bastante intuitiva. Primeiro, você estabelecer uma conexão, então você fazer o upload dos arquivos que você precisa, e, finalmente, fechar a conexão. Veja como usar as funções de FTP em PHP:

? Lt; php // configurar básica conexão $ connection_id = ftp_connect ($ ftp_server) - // de login com nome de usuário e senha $ login_result = ftp_login ($ connection_id, $ ftp_username, $ ftp_password) - // verificar connectionif (($ connection_id! ) || ($ login_result)) {echo "conexão FTP falhou!" - echo "Houve uma tentativa de se conectar ao servidor $ ftp_server para o usuário $ ftp_username" -exit-}! else {echo "Conectado a $ ftp_server, para o usuário $ ftp_username" -} // carregar o arquivo $ upload = ftp_put ($ connection_id, $ destination_file, $ source_file, FTP_BINARY) - // verificar carregamento statusif ($ carregamento!) {echo "FTP upload falhou!" -} else {echo "Carregado $ source_file para US $ ftp_server quanto $ destination_file "-} // fechar a streamftp_close FTP ($ conn_id) ->

Aqui estão as funções de FTP mais comuns e seus argumentos:

  • ftp_connect (string $ host [, int $ port [, int $ timeout]]): Conectar ao servidor FTP - neste caso, o seu servidor web.

  • ftp_login (resource $ ftp_stream, string $ username, $ password string): Enviar credenciais de login para o servidor FTP.

  • ftp_put ($ ftp_stream recursos, string $ remote_file, string $ local_file, int $ mode [, int $ startpos]): Coloque um arquivo da máquina local para o servidor.

  • ftp_get ($ ftp_stream recursos, string $ local_file, string $ remote_file, int $ mode [, int $ resumepos]): Obter um arquivo a partir do servidor e enviá-lo a uma máquina local.

  • ftp_close (resource $ ftp_stream): Fechar a ligação com o servidor.

Você precisa fechar o fluxo de FTP assim que você terminar com ele- caso contrário, você tem uma conexão aberta que é vulnerável ao seqüestro.

menu