
Un projet Java sérieusement défectueux pour l'enseignement des concepts Top 10 à 2017 OWASP.
DO NOT USE ANY PART OF THIS CODE IN PRODUCTION.
Ces instructions vous procureront une copie du projet opérationnel sur votre machine locale à des fins de développement et de test.
Vous aurez besoin:
Installez JDK et configurez correctement les variables d'environnement JAVA_HOME et PATH . Certaines lignes directrices sont fournies dans ce poste StackOverflow.
Ouvrez une invite de commande et assurez-vous que tout fonctionne bien:

Unzip MySQL, et allez au répertoire bin . Exécutez la commande suivante ( non recommandée pour les environnements de production):
mysqld --initialize-insecure
Cette commande initialise le répertoire de données et crée un compte de superutilisateur 'root'@'localhost' avec un mot de passe vide.
Pour installer le service sur les machines Windows, exécutez:
mysqld --install
Enfin, pour démarrer le service, exécutez:
sc start mysql
Pour vérifier si l'installation a réussi, émettez la commande mysql -uroot : 
Tapez exit et appuyez sur Enter pour sortir de la console MySQL.
Nous devons créer notre exemple de base de données et les remplir avec des exemples de données. Le fichier SQL est appelé testdb.sql. Téléchargez-le dans le répertoire MySQL bin et à partir de là, exécutez la commande suivante:
mysql -uroot < testdb.sql
Si tout se passe bien, vous pouvez émettre les commandes et voir les résultats comme indiqué ci-dessous:

Enfin, modifiez le mot de passe root en 123456 , car les mots de passe vides ne seront pas acceptés par le serveur Payara (prochaine étape). Notez que le mot de passe lui-même, ainsi que la méthode suivante pour modifier le mot de passe, sont totalement insécurisés :
mysqladmin --user=root password "123456"
Télécharger et extraire le serveur Payara, ainsi que le connecteur MySQL / J. J'ai extrait ce dernier à C:tmpmysql-connector-java-8.0.18.jar .
Assurez-vous de suivre les instructions d'installation et de configuration de JDK-11. Démarrez le serveur Payara en utilisant la commande suivante:
asadmin start-domain
Ensuite, installez le connecteur MySQL / J:
asadmin add-library C:tmpmysql-connector-java-8.0.18.jar
Voici un instantané de la façon dont les choses devraient ressembler:

Ouvrez la console Web Payara et accédez à Resources → JDBC → JDBC Connection Pools . Cliquez sur le New Buttton.

Pour l'étape 1, remplissez les informations exactement comme suit:

Pour l'étape 2, faites défiler vers le bas jusqu'à ce que vous voyiez les Additional Properties :

Vous devez définir les propriétés suivantes (triés par ordre alphabétique):
allowPublicKeyRetrieval - si le client est autorisé à demander automatiquement la clé publique du serveur. Réglé sur true . (Non recommandé dans les environnements de production)DatabaseName - le nom de la base de données à laquelle vous souhaitez vous connecter. Dans ce cas, testdb .Password : le mot de passe de l'utilisateur spécifié. Ici, c'est 123456 .ServerName : l'emplacement du serveur MySQL. Dans ce cas, localhost .sslMode : si SSL est utilisé pour se connecter à MySQL Server. Définissez-le sur DISABLED . (Non recommandé dans les environnements de production)URL et Url : L'URL JDBC à utiliser. Ici, définissez-le sur jdbc:mysql://localhost:3306/testdb .User : le nom d'utilisateur pour se connecter à la base de données. Ici, c'est root . Appuyez sur le bouton Finish . Cliquez sur le pool de connexion nouvellement créé. Dans l'onglet General , cliquez sur le bouton Ping . Si tout va bien, vous devriez voir ce qui suit:

De même, créez un autre pool de connexion appelé MySQL_readonly_Pool . L'étape 1 est la même que le pool de connexion précédent. Pour l'étape 2, définissez les Additional Properties comme suit:
allowPublicKeyRetrieval: true .DatabaseName: testdb .Password: MyVeryLongPassphrase .ServerName: localhost .sslMode: DISABLED .URL: jdbc:mysql://localhost:3306/testdb .Url: jdbc:mysql://localhost:3306/testdb .User: readonly . Nous devons configurer les ressources JDBC. Accédez aux Resources → JDBC → JDBC Resources et cliquez sur New . Remplissez le formulaire comme suit:
JNDI Name: jdbc/MySQL_root_DataSourceConnection Pool: MySQL_root_Pool
De même, faites-le pour le deuxième pool de connexions:
JNDI Name: jdbc/MySQL_readonly_DataSourceConnection Pool: MySQL_readonly_PoolEnfin, émettez la commande suivante pour arrêter le serveur Payara.
asadmin stop-domain
Cela se fait puisque Intellij Idea démarre automatiquement le serveur.
Ouvrez le projet dans Intellij Idea. Il vous informe que Web framework is detected :

Cliquez sur Configure pour ouvrir la fenêtre Setup Frameworks . Ensuite, cliquez simplement sur OK:

Sélectionnez Run → Edit Configurations... Templates → GlassFish Server → Local . Cliquez sur Configure :

Sélectionnez GlassFish Home . S'il est sélectionné correctement, Intellij détectera automatiquement la GlassFish Version :

Cliquez sur OK . Dans la zone déroulante Server Domain , sélectionnez domain1 .

Cliquez sur Apply . Vous avez maintenant un modèle de poisson-verre approprié que vous pouvez utiliser sur plusieurs projets. Mais pour chaque projet, vous devez configurer "l'artefact" à déplorer. À cette fin, cliquez sur le + en haut à gauche et sélectionnez GlassFish Server → Local :

En bas, Intellij vous avertit No artifacts configured . Cliquez simplement sur le bouton Fix .

Ensuite, dans la fenêtre Artifacts , cliquez sur le signe + et choisissez Web Application Exploded → From Modules

Choisissez le seul module disponible, c'est-à-dire OWASP-JAVA , et cliquez sur OK.

Cliquez sur OK pour revenir aux Run/Debug Configurations . En bas, vous verrez un autre avertissement: Debug settings are invalid or not suitable for local debugging . Cliquez sur le bouton Fix et Intellij s'en occupera pour vous.

Vous pouvez maintenant exécuter le projet. Intellij ouvre automatiquement votre navigateur par défaut et navigue vers http://localhost:8080/OWASP_Java_war_exploded/ :

Entrez les informations d'identification suivantes:
kambiz1Si tout fonctionne correctement, vous serez redirigé vers la page d'accueil de l'utilisateur:

Sinon, vous devrez peut-être regarder les bûches Glassfish, telles que rapportées par Intellij, pour voir ce qui s'est mal passé.

Soit dit en passant, j'utilise le plugin de console Grep pour analyser plus facilement les journaux.