
Un proyecto de Java muy defectuoso para enseñar OWASP Top 10 - Conceptos de 2017.
DO NOT USE ANY PART OF THIS CODE IN PRODUCTION.
Estas instrucciones le darán una copia del proyecto en funcionamiento en su máquina local para fines de desarrollo y prueba.
Necesitarás:
Instale JDK y configure las variables de entorno JAVA_HOME y PATH correctamente. Algunas pautas se proporcionan en esta publicación de StackOverflow.
Abra un símbolo del sistema y asegúrese de que todo funcione sin problemas:

Descompensar mysql y ve al directorio bin . Ejecute el siguiente comando ( no recomendado para entornos de producción):
mysqld --initialize-insecure
Este comando inicializa el directorio de datos y crea una cuenta de superusor 'root'@'localhost' con contraseña vacía.
Para instalar el servicio en las máquinas de Windows, ejecute:
mysqld --install
Finalmente, para comenzar el servicio, ejecute:
sc start mysql
Para verificar si la instalación fue exitosa, emita el comando mysql -uroot : 
Escriba exit y presione Enter para salir de la consola MySQL.
Necesitamos crear nuestra base de datos de muestra y completarla con datos de muestra. El archivo SQL se llama testdb.sql. Descárguelo en el directorio MySQL bin , y desde allí ejecute el siguiente comando:
mysql -uroot < testdb.sql
Si todo va bien, puede emitir los comandos y ver los resultados como se muestra a continuación:

Finalmente, cambie la contraseña root a 123456 , ya que las contraseñas vacías no serán aceptadas por el servidor Payara (siguiente paso). Observe que la contraseña en sí, así como el siguiente método para cambiar la contraseña, son totalmente inseguros :
mysqladmin --user=root password "123456"
Descargue y extraiga el servidor Payara, así como el conector MySQL/J. Extraje este último a C:tmpmysql-connector-java-8.0.18.jar .
Asegúrese de seguir las instrucciones para instalar y configurar JDK-11. Inicie el servidor Payara usando el siguiente comando:
asadmin start-domain
A continuación, instale el conector mysql/j:
asadmin add-library C:tmpmysql-connector-java-8.0.18.jar
Aquí hay una instantánea de cómo deberían verse las cosas:

Abra la consola web de Payara y navegue a Resources → JDBC → JDBC Connection Pools . Haga clic en el New Buttton.

Para el paso 1, complete la información exactamente como sigue:

Para el paso 2, desplácese hacia abajo hasta que vea las Additional Properties :

Debe establecer las siguientes propiedades (ordenadas alfabéticamente):
allowPublicKeyRetrieval : si el cliente puede solicitar automáticamente la clave pública desde el servidor. Establecido en true . (No recomendado en entornos de producción)DatabaseName : el nombre de la base de datos a la que desea conectarse. En este caso, testdb .Password : la contraseña para el usuario especificado. Aquí, es 123456 .ServerName : la ubicación del servidor MySQL. En este caso localhost .sslMode : si SSL se usa para conectarse al servidor MySQL. Establecerlo en DISABLED . (No recomendado en entornos de producción)URL y Url : la URL JDBC para ser utilizada. Aquí, configúrelo en jdbc:mysql://localhost:3306/testdb .User : el nombre de usuario para conectarse a la base de datos. Aquí, es root . Presione el botón Finish . Haga clic en el grupo de conexión recién creado. En la pestaña General , haga clic en el botón Ping . Si todo sale bien, debería ver lo siguiente:

Del mismo modo, cree otro grupo de conexión llamado MySQL_readonly_Pool . El paso 1 es el mismo que el grupo de conexión anterior. Para el paso 2, establezca las Additional Properties de la siguiente manera:
allowPublicKeyRetrieval: true .DatabaseName: testdb .Password: MyVeryLongPassphrase .ServerName: localhost .sslMode: DISABLED .URL: jdbc:mysql://localhost:3306/testdb .Url: jdbc:mysql://localhost:3306/testdb .User: readonly . Necesitamos configurar los recursos JDBC. Vaya a Resources → JDBC → JDBC Resources y haga clic en New . Complete el formulario de la siguiente manera:
JNDI Name: jdbc/MySQL_root_DataSourceConnection Pool: MySQL_root_Pool
Del mismo modo, haga esto para el segundo grupo de conexión:
JNDI Name: jdbc/MySQL_readonly_DataSourceConnection Pool: MySQL_readonly_PoolFinalmente, emita el siguiente comando para detener el servidor Payara.
asadmin stop-domain
Esto se hace ya que IntelliJ Idea inicia automáticamente el servidor.
Abra el proyecto en Idea IntelliJ. Le notifica que Web framework is detected :

Haga clic en Configure para abrir la ventana Setup Frameworks . Entonces, simplemente haga clic en Aceptar:

Seleccione Run → Edit Configurations... Abra Templates → GlassFish Server → Local . Haga clic en Configure :

Seleccione GlassFish Home . Si se selecciona correctamente, IntelliJ detectará automáticamente la GlassFish Version :

Haga clic en OK . Desde el cuadro desplegable Server Domain , seleccione domain1 .

Haga clic en Apply . Ahora tiene una plantilla de pez de vidrio adecuada que puede usar en múltiples proyectos. Pero para cada proyecto, debe configurar el "artefacto" para ser agotado. Para este fin, haga clic en el + en la parte superior izquierda y seleccione GlassFish Server → Local :

En la parte inferior, IntelliJ te advierte que No artifacts configured . Simplemente haga clic en el botón Fix .

Luego, en la ventana Artifacts , haga clic en el signo + y elija Web Application Exploded → From Modules

Elija el único módulo disponible, es decir, OWASP-JAVA y haga clic en Aceptar.

Haga clic en Aceptar para volver a las Run/Debug Configurations . En la parte inferior, verá una advertencia más: Debug settings are invalid or not suitable for local debugging . Haga clic en el botón Fix , e IntelliJ se encargará de eso por usted.

Ahora puedes ejecutar el proyecto. IntelliJ abre automáticamente su navegador predeterminado y navega a http://localhost:8080/OWASP_Java_war_exploded/ ::

Ingrese las siguientes credenciales:
kambiz1Si todo funciona correctamente, será redirigido a la página de inicio del usuario:

De lo contrario, es posible que deba mirar los troncos de Glassfish, según lo informado por IntelliJ, para ver qué salió mal.

Por cierto, uso el complemento de la consola GREP para analizar los registros más fácilmente.