Cinco Bugs em paginas de Upload6 Bugs em paginas de Upload 1. Eu estava fazendo upload de arquivo no site do agiletesters e encontrei um Bug no NodeBB, nao conseguia fazer o upload do arquivo. Analisando o problema vi que quando exportei a apresentacao que fiz pra imagem, ele gerou a extensao com letra maiuscula. O NodeBB nao foi capaz de notar isso, provavelmente o programador quando fez a funcao deixou em lowercase a validacao, a melhor forma e voce converter tudo que vem pra lowercase ou seja letras minuscula. Isso e bem comum de acontecer esse tipo de problema nas aplicacoes, o programador com pressa deixa a validacao em lowercase ou uppercase, esquecendo de validar os dois na sua validacao. Fica aqui essa dica para conhecimento dos testadores. Caso voces tenham duvida que seja um erro, leia sobre o desenvolvimento de uma pagina de upload abaixo:http://www.linhadecodigo.com.br/artigo/3578/php-upload-de-arquivos.aspx No codigo apresentado na linha 32 ele usou a funcao strtolower, todo bom programador sabe que tem que converter o codigo pra lowercase , senao pode dar problema.Funcao aonde ele converte o a extensao pra letras minusculas: $extensao = strtolower(end(explode('.', $_FILES['arquivo']['name'])));http://php.net/manual/pt_BR/function.strtolower.php Exemplo real site do Agile Testers.Alguns testadores leigos vao dizer que isso nao e problema, existem muitos programas que converte a extensao pra letras maiusculas, no meu caso foi o PowerPoint, um programa muito utilizado. Muitos clientes podem reclamar do sistema que nao esta fazendo o upload, ate voce explicar para o cliente isso ja deu bastante problema. E claro que nao e problema do Agile Testes, que somente adotou o NodeBB, a questao que esta sendo levada aqui e outra.2. Outro problema das paginas de Upload, e deixar fazer o upload de qualquer extensao sem restricao, nesse caso o NodeBB fez muito bem, como vemos abaixo:Ja vi sites serem invadidos por esse problema, ao fazer o upload de arquivos .php/.jsp/.java, pode ser executados remotamente pelo servidor, tendo acesso a enviar comandos no servidor, abrir portas para conexao, copiar dados, infectar outras maquinas com virus, ou ate mesmo travar o servidor com loops infinitos.No site do "linha de codigo" ele desenvolveu um codigo bem legal, faz esse tipo de validacao com um array, ele tambem poderia ler um arquivo de configuracao .properties, sem precisar mexer no codigo para acrescentar uma nova extensao, caso o cliente venha pedir.// Array com as extensoes permitidas$_UP['extensoes'] = array('jpg', 'png', 'gif');Com isso evitamos o problema abaixo:Um teste que se pode fazer e alterar a extensao da imagem, tentando enganar a aplicacao, exemplo:teste.png.php3. Terceiro Bug e deixar fazer upload de arquivos muito grandes, sem nenhuma limitacao. Isso pode gerar varios problemas de performance no servidor, para evitar essa dor de cabeca futuramente, limite o tamanho dos arquivos de upload. No codigo do "linha de codigo" ele fez bem feito, limitou em 2 megabyte.// Tamanho maximo do arquivo (em Bytes)$_UP['tamanho'] = 1024 * 1024 * 2; // 2MbTeste: Tente fazer upload de um arquivo gigante como 300Mb fora da rede da empresa, tente fazer a aplicacao travar.4. Nosso quarto problema em paginas de upload e caracteres especiais e acentuacao, algumas paginas