Closed pedrokpp closed 10 months ago
Salve pedro tudo bom??
po fico feliz demais que vc e seus amigos estão usando o site :) e realmente eu nao esperava alguem abrir uma issue aqui kkkkkkk.
O problema da exposição da API Key eu já estava ciente, agora o segundo eu não conhecia, muito obrigado por me informar sobre, inclusive com link explicando. Eu tentei esconder a api key utilizando dotenv do node mas por algum motivo não está dando certo.
E sobre o SSR eu teria obrigatoriamente que utilizar o Next??
não funcionou com o dotenv pq esse site é estático e a vercel só hoestea estaticamente os arquivos e pro dotenv funcionar precisa ter o .env lá na host
o SSR é muito provavelmente configurável quando vc faz o deploy na vercel, não tenho certeza mas consigo fuçar depois se vc n conseguir
e não coloca o .env na host que é exposto tbm kkkkk ou coloca pra vercel n expor o arquivo
acabei de achar, realmente se vc quiser implementar SSR só com frameworks
nesse caso, tem como vc definir variáveis de ambiente
e usar process.env.API_KEY
por exemplo
salve, tranquilo?
mano, acho que você nem espera isso mas eu uso esse site com alguns amigos e por isso eu resolvi dar uma olhada, mas resumindo: nada grave porém é interessante vc resolver por boas práticas mesmo
cara, tua key da api tá completamente exposta, isso nunca se faz. se alguem mal intencionado quiser abusar dessa key é muito fácil e ainda por cima se tiver algum método de pagamento para uso da key vc vai acabar pagando.
outra vulnerabilidade é uma conhecida como HTTP Parameter Pollution que acontece ao vc definir a url a ser requisitada:
nessa url primeiro que vaza a tua key, segundo que ali onde tá userInput eu consigo colocar qualquer outro parametro na requisição, o que pode acarretar em várias outras funcionalidades e principalmente acesso a suas próprias informações devido a métodos disponíveis da api do próprio lastfm
um exemplo de userInput que funciona normalmente é, por exemplo:
kp&method=user.getTopArtists
pra vc resolver essas coisas é bem simples. vc deve tratar o input do usuário e idealmente fazer a página ser carregada no servidor (SSR - server-side rendering) para que a requisição seja feita server-side evitando a exposição da key
se tiver dificuldade posso fazer alguns PRs depois ou vc pode responder aqui msm