Este é um projeto React que contém intencionalmente vulnerabilidades de segurança para fins educacionais. Este projeto não deve ser implantado ou usado em um ambiente de produção. Ele foi criado com o propósito de demonstrar exemplos de vulnerabilidades comuns encontradas em aplicativos e como se proteger contra elas.
Certifique-se de ter o Node.js instalado em sua máquina. Clone o repositório e, em seguida, execute o seguinte comando para instalar as dependências:
Para executar o projeto, utilize o seguinte comando:
Isso iniciará o aplicativo em modo de desenvolvimento e abrirá a página no navegador. Você poderá acessar o aplicativo em http://localhost:3000
.
O projeto contém as seguintes vulnerabilidades demonstradas:
-
Injeção de Código: O componente
DangerVulnerableComponent
permite a injeção de códigohtml
dentro de umadiv
. Sem realizar a sanitização desseinput
, isso pode levar a execução não autorizada de código inserido pelo usuário. No exemplo, foi utilizada a instrução:<img src=x onerror=alert('Hacked')//>
que provoca um erro nosrc=x
e executa uma chamadaonerror=<código_javascript>
, permitindo a chamada de um código javascript. -
Injeção de Código: O componente
EvalVulnerableComponent
permite a injeção de código malicioso ao usar a funçãoeval
. Isso pode levar a execução não autorizada de código inserido pelo usuário. No exemplo, foi utilizada a instrução:"); alert('Hacked'); alert("
que propoe a finalização de uma instrução e a execução de uma próxima função. -
Injeção de Código: O componente
HrefVulnerableComponent
permite a injeção de código malicioso ao usarhref
sem tratar o input do usuário. Isso pode levar a execução não autorizada de código inserido pelo usuário. No exemplo, foi utilizada a instrução:javascript: alert('Hacked');
para executar um código javascript diretamente.
Este projeto é destinado apenas para fins educacionais e serve como uma demonstração de vulnerabilidades comuns. Para proteger seu aplicativo contra vulnerabilidades de segurança, aqui estão algumas práticas recomendadas:
- Evite o uso de funções como
eval
ouFunction
para executar código inserido pelo usuário. - Valide e sanitize todas as entradas do usuário antes de processá-las ou exibi-las no aplicativo.
- Utilize bibliotecas e frameworks seguros que ofereçam proteções integradas contra vulnerabilidades conhecidas.
- Mantenha-se atualizado com as melhores práticas de segurança e mantenha seu aplicativo e dependências atualizados.
- Evite o uso de parâmetros como
dangerouslySetInnerHTML
para atribuir novos elementos.
Sinta-se à vontade para contribuir para este projeto adicionando exemplos de outras vulnerabilidades comuns ou melhorando a documentação existente. Por favor, envie um pull request com suas alterações.
Este projeto é fornecido "no estado em que se encontra" e não oferece garantias ou responsabilidades. O uso deste projeto é de sua inteira responsabilidade. O autor não será responsável por quaisquer danos ou consequências resultantes do uso deste projeto.
Este projeto é licenciado sob a MIT License.