
O projeto OWASP NodeGoat fornece um ambiente para aprender como os riscos de segurança do OWASP Top 10 se aplicam a aplicações web desenvolvidas usando Node.js e como lidar com eles de forma eficaz.
Sendo leve, rápido e escalável, o Node.js está se tornando uma plataforma amplamente adotada para o desenvolvimento de aplicações web. Este projeto fornece um ambiente para aprender como os riscos de segurança do OWASP Top 10 se aplicam a aplicações web desenvolvidas com Node.js e como lidar com eles de forma eficaz.
OWASP Top 10 para aplicações web Node.js:
Esta aplicação inclui uma página de tutorial que explica as vulnerabilidades do OWASP Top 10 e como corrigi-las.
Depois que a aplicação estiver em execução, você pode acessar a página de tutorial em http://localhost:4000/tutorial (ou na porta que você configurou).
Uma aplicação Node.js vulnerável para Ninjas para explorar, quebrar e corrigir. Você pode querer configurar sua própria cópia da aplicação para corrigir e testar vulnerabilidades. Dica: procure por comentários no código-fonte.
O banco de dados vem pré-populado com estas contas de usuário criadas como parte dos dados iniciais -
admin p:Admin_123user1 p:User1_123), (u:user2 p:User2_123)Instale o Node.js - O NodeGoat requer Node v8 ou superior
Clone o repositório do GitHub:
git clone https://github.com/OWASP/NodeGoat.git
Vá para o diretório:
cd NodeGoat
Instale os pacotes do Node:
npm install
Configure o MongoDB. Você pode instalar o MongoDB localmente ou criar uma instância remota:
Usando MongoDB local:
Usando instância remota do MongoDB:
MONGODB_URI para a string de conexão do seu cluster, que pode ser visualizada no
diálogo de conexão do cluster. Selecione "Connect your application",
defina o driver como "Node.js" e a versão como "2.2.12 or later". Isso fornecerá uma string de conexão no formato:
mongodb://<username>:<password>@<cluster>/<dbname>?ssl=true&replicaSet=<rsname>&authSource=admin&retryWrites=true&w=majority
Os campos <username> e <password> precisam ser preenchidos com os detalhes do usuário do banco de dados adicionado anteriormente. O campo <dbname> define o nome do
banco de dados que o nodegoat usará no cluster (por exemplo, "nodegoat"). Os outros campos já estarão preenchidos com os detalhes corretos do seu cluster.Popule o MongoDB com os dados iniciais necessários para a aplicação:
npm run db:seed
Por padrão, isso usará a configuração "development", mas a configuração desejada pode ser passada como argumento, se necessário.
Inicie o servidor. Você pode executar o servidor usando node ou nodemon:
npm start
npm run dev
Por padrão, a aplicação será hospedada na porta 4000 e se conectará a uma instância do MongoDB em localhost:27017. Para alterar isso, defina as variáveis de ambiente PORT e MONGODB_URI.
Outras configurações podem ser alteradas atualizando o arquivo de configuração.
O repositório inclui o Dockerfile e o docker-compose.yml necessários para configurar a aplicação e a instância do banco de dados e, em seguida, conectá-los.
Instale o docker e o docker compose
Clone o repositório do GitHub:
git clone https://github.com/OWASP/NodeGoat.git
Vá para o diretório:
cd NodeGoat
Construa as imagens:
docker-compose build
Execute a aplicação; isso inicia a aplicação NodeGoat em http://localhost:4000/:
docker-compose up
Esta opção usa um servidor Node gratuito ($0/mês) do Heroku.
Embora não seja essencial, é recomendado que você faça um fork deste repositório e implante o repositório forkado. Isso permitirá que você corrija vulnerabilidades na sua própria versão do fork e, em seguida, implante e teste-a no Heroku.
Configure uma instância do MongoDB publicamente acessível:
Implante o NodeGoat no Heroku clicando no botão abaixo:
No diálogo Create New App, defina a variável de configuração MONGODB_URI para a string de conexão do seu cluster MongoDB Atlas.
Ela pode ser visualizada no diálogo de conexão do cluster.
Selecione "Connect your application", defina o driver como "Node.js" e a versão como "2.2.12 or later".
Isso fornecerá uma string de conexão no formato:
mongodb://<username>:<password>@<cluster>/<dbname>?ssl=true&replicaSet=<rsname>&authSource=admin&retryWrites=true&w=majority
Os campos <username> e <password> precisam ser preenchidos com os detalhes do usuário do banco de dados adicionado anteriormente. O campo <dbname> define o nome do
banco de dados que o nodegoat usará no cluster (por exemplo, "nodegoat"). Os outros campos já estarão preenchidos com os detalhes corretos do seu cluster.
Por favor, siga o guia de contribuição
Este projeto está sujeito a um Código de Conduta.