5 lições de segurança que aprendi estudando um host temporário de arquivos
Estudei como funciona um projeto open-source de host temporário de arquivos, o Waifuvault, e criei um utilizando Laravel. Neste artigo, vou compartilhar 5 lições de segurança que são essenciais nesse tipo de aplicação e um pouco da experiência de criar esse projeto utilizando Laravel. Não confie no que é enviado pelo usuário Provavelmente você já deve ter ouvido essa frase e nesse tipo de…
Ao estudar o host temporário de arquivos open-source Waifuvault, utilizando Laravel, aprendi cinco lições essenciais de segurança. Primeiramente, confie em nada enviado pelo usuário. É crucial validar dados como o nome do arquivo, Content-Type e Content-Length, especialmente se recebe um arquivos de 10MB. Verifique o tamanho de dados no streaming para evitar registros órfãos e falhas enviesadas.
Segundamente, altere o nome do arquivo gerado pela aplicação, como um UUID, para prevenir sobrescritas e nomes maliciosos. Terceiramente, identifique o conteúdo real do arquivo, não apenas a extensão enviada. Verifique os primeiros bytes do conteúdo, que servem como uma assinatura do tipo de arquivo.
Quarto, mantenha o Storage e o Banco de dados em sincronia para evitar registros órfãos. Salve primeiro o arquivo no storage e, em seguida, insira os metadados no banco de dados, caso o insert falhe, limpe o arquivo do storage.
Por último, o acesso a arquivos deve passar pela aplicação para aplicar regras de negócio, como expiração e acesso controlado. Os arquivos expirados devem ser limpos por um cron job periódico, sem necessariamente serem excluídos imediatamente.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.