
Um projeto Java seriamente defeituoso para ensinar conceitos Owasp Top 10 - 2017.
DO NOT USE ANY PART OF THIS CODE IN PRODUCTION.
Essas instruções fornecerão uma cópia do projeto em funcionamento em sua máquina local para fins de desenvolvimento e teste.
Você precisará:
Instale o JDK e configure variáveis de ambiente JAVA_HOME e PATH corretamente. Algumas diretrizes são fornecidas nesta postagem do StackOverflow.
Abra um prompt de comando e verifique se tudo funciona bem:

Descompacte MySQL e vá para o diretório bin . Execute o seguinte comando ( não recomendado para ambientes de produção):
mysqld --initialize-insecure
Este comando inicializa o diretório de dados e cria uma conta de superusuário 'root'@'localhost' com senha vazia.
Para instalar o serviço nas máquinas Windows, execute:
mysqld --install
Finalmente, para iniciar o serviço, execute:
sc start mysql
Para verificar se a instalação foi bem -sucedida, emita o comando mysql -uroot : 
Digite exit e pressione Enter para sair do console MySQL.
Precisamos criar nosso banco de dados de amostra e preenchê -lo com dados de amostra. O arquivo SQL é chamado TestDB.SQL. Faça o download do diretório MySQL bin e, a partir daí, execute o seguinte comando:
mysql -uroot < testdb.sql
Se tudo correr bem, você pode emitir os comandos e ver os resultados como mostrado abaixo:

Por fim, altere a senha root para 123456 , pois as senhas vazias não serão aceitas pelo Payara Server (próxima etapa). Observe que a senha em si, bem como o método a seguir para alterar a senha, são totalmente inseguras :
mysqladmin --user=root password "123456"
Faça o download e extraia o servidor Payara, bem como o MySQL Connector/J. Extraí o último para C:tmpmysql-connector-java-8.0.18.jar .
Certifique-se de seguir as instruções para instalar e configurar o JDK-11. Inicie o servidor Payara usando o seguinte comando:
asadmin start-domain
Em seguida, instale o MySQL Connector/J:
asadmin add-library C:tmpmysql-connector-java-8.0.18.jar
Aqui está um instantâneo de como as coisas devem ser:

Open Payara Web Console e navegue para Resources → JDBC → JDBC Connection Pools . Clique no New Buttton.

Para a etapa 1, preencha as informações exatamente as seguintes:

Para a etapa 2, role para baixo até ver as Additional Properties :

Você precisa definir as seguintes propriedades (classificadas em ordem alfabética):
allowPublicKeyRetrieval - se o cliente pode solicitar automaticamente a chave pública do servidor. Definido como true . (Não recomendado em ambientes de produção)DatabaseName - o nome do banco de dados para o qual deseja conectar. Nesse caso, testdb .Password : a senha do usuário especificado. Aqui, é 123456 .ServerName : o local do servidor MySQL. Nesse caso, localhost .sslMode : se o SSL é usado para conectar -se ao MySQL Server. Defina -o como DISABLED . (Não recomendado em ambientes de produção)URL e Url : o URL JDBC a ser usado. Aqui, defina -o como jdbc:mysql://localhost:3306/testdb .User : o nome de usuário para se conectar ao banco de dados. Aqui, é root . Aperte o botão Finish . Clique no pool de conexões recém -criado. Na guia General , clique no botão Ping . Se tudo correr certo, você deve ver o seguinte:

Da mesma forma, crie outro pool de conexão chamado MySQL_readonly_Pool . A etapa 1 é a mesma do pool de conexão anterior. Para a etapa 2, defina as Additional Properties da seguinte forma:
allowPublicKeyRetrieval: true .DatabaseName: testdb .Password: MyVeryLongPassphrase .ServerName: localhost .sslMode: DISABLED .URL: jdbc:mysql://localhost:3306/testdb .Url: jdbc:mysql://localhost:3306/testdb .User: readonly . Precisamos configurar os recursos JDBC. Vá para Resources → JDBC → JDBC Resources e clique em New . Preencha o formulário da seguinte forma:
JNDI Name: jdbc/MySQL_root_DataSourceConnection Pool: MySQL_root_Pool
Da mesma forma, faça isso para o segundo pool de conexão:
JNDI Name: jdbc/MySQL_readonly_DataSourceConnection Pool: MySQL_readonly_PoolPor fim, emita o comando a seguir para interromper o servidor payara.
asadmin stop-domain
Isso é feito, pois a ideia do Intellij inicia automaticamente o servidor.
Abra o projeto em Intellij Idea. Ele notifica que Web framework is detected :

Clique em Configure para abrir a janela Setup Frameworks . Então, basta clicar em OK:

Selecione Run → Edit Configurations... Templates → GlassFish Server → Local . Clique em Configure :

Selecione GlassFish Home . Se selecionado corretamente, o Intellij detectará automaticamente a GlassFish Version :

Clique em OK . Na caixa suspensa Server Domain , selecione domain1 .

Clique em Apply . Agora você tem um modelo de peixe de vidro adequado que pode usar em vários projetos. Mas para cada projeto, você precisa configurar o "artefato" para ser esgotado. Para esse fim, clique no + na parte superior esquerda e selecione GlassFish Server → Local :

No fundo, o Intellij avisa que No artifacts configured . Basta clicar no botão Fix .

Em seguida, na janela Artifacts , clique no sinal + e escolha Web Application Exploded → From Modules

Escolha o único módulo disponível, ou seja, OWASP-JAVA e clique em OK.

Clique em OK para retornar às Run/Debug Configurations . Na parte inferior, você verá mais um aviso: Debug settings are invalid or not suitable for local debugging . Clique no botão Fix e o Intellij cuidará disso para você.

Agora você pode executar o projeto. Intellij abre automaticamente seu navegador padrão e navega para http://localhost:8080/OWASP_Java_war_exploded/ :

Digite as seguintes credenciais:
kambiz1Se tudo funcionar corretamente, você será redirecionado para a página inicial do usuário:

Caso contrário, pode ser necessário olhar para os troncos de vidro, conforme relatado pela Intellij, para ver o que deu errado.

A propósito, eu uso o plug -in Grep Console para analisar os logs mais fáceis.