[JAVA] J'ai essayé de cloner une application Web pleine de bugs avec Spring Boot

Aperçu

Présenté avant Application Web remplie de bogues ["EasyBuggy"](https://github.com/k-tamura/easybuggy/blob/master/README J'ai fait un clone de .jp.md) basé sur Spring Boot ("EasyBuggy Boot") ..

Vous pouvez le télécharger depuis ici et le démarrer avec la commande suivante.

java -jar ROOT.war
* Java 7 ou supérieur est requis pour démarrer. Si vous définissez `java -jar ROOT.war --port = 9000`, il démarrera sur le port 9000.

Si vous ajoutez l'option Java comme indiqué ci-dessous, vous pouvez générer des journaux, déboguer et surveiller avec JMX (* Ceci est une option pour Java 7). Il limite également l'utilisation maximale de la mémoire, ce qui le rend plus sujet à des problèmes tels que OutOfMemoryError.

java -Xmx256m -XX:MaxPermSize=64m -XX:MaxDirectMemorySize=90m -XX:+UseSerialGC -Xloggc:logs/gc.log -XX:+PrintHeapAtGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=10M -XX:GCTimeLimit=15 -XX:GCHeapFreeLimit=50 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=logs/ -XX:ErrorFile=logs/hs_err_pid%p.log -agentlib:jdwp=transport=dt_socket,server=y,address=9009,suspend=n -Dderby.stream.error.file=logs/derby.log -Dderby.infolog.append=true -Dderby.language.logStatementText=true -Dderby.locks.deadlockTrace=true -Dderby.locks.monitor=true -Dderby.storage.rowLocking=true -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=7900 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -ea -jar ROOT.war

Lorsque le message suivant s'affiche, l'application Web a été lancée.

2017-08-11 22:05:25.233  INFO 81661 --- [           main] o.t.e.Easybuggy4sbApplication            : Started Easybuggy4sbApplication in 8.404 seconds (JVM running for 10.723)

Lorsque vous visitez http: // localhost: 8080, vous verrez la page principale.

Screenshot from 2017-08-27 13-49-32.png

Méthodes de démarrage autres que celles ci-dessus

Vous pouvez également démarrer avec git clone et mvn clean spring-boot: run.

$ git clone https://github.com/k-tamura/easybuggy4sb
$ cd easybuggy4sb
$ mvn clean spring-boot:run
`server.port = $ {port: 8080}` ligne dans `src / main / resources / application.properties` est remplacée par` server.port = 9000` Ensuite, il démarrera sur le port 9000.

Vous pouvez également déployer ROOT.war dans un conteneur Java tel que Tomcat 8.5 et cela fonctionnera également.

Utilisation de cette application

Semblable à "Easy Buggy", le but est de reproduire, analyser et approfondir la compréhension des différents obstacles. La raison pour laquelle j'ai fait quelque chose avec la même fonction est que je voulais savoir ce qui suit (je suis personnellement intéressé).

  • Est-il facile de créer des vulnérabilités et des fuites de ressources dans les dernières applications basées sur le framework (Spring Boot)?
  • Que faut-il pour migrer une ancienne application vers Spring Boot?
  • La lisibilité sera-t-elle améliorée par la migration des applications héritées vers Spring Boot? ―― Quelle est la différence entre la productivité de développement de Spring Boot et les applications héritées?

Je les publierai dans un autre article à une date ultérieure. Je l'ai fait avec mon intérêt personnel, mais je pense que ce sera utile aux fins suivantes.

  • Comprendre les exemples d'implémentation qui créent des vulnérabilités dans les applications basées sur Spring Boot
  • Référence lors de la migration d'applications héritées vers des applications basées sur Spring Boot

Différences de configuration

Les principales différences entre les configurations "Easy Buggy" et "Easy Buggy Boot" sont les suivantes.

Différence EasyBuggy EasyBuggy Boot
Technologie de base Servlet 3.0.1 Spring Boot 1.5.6 (Servlet 3.0.1)
Couche de présentation inutilisé(Certains JSP 2.2 + JSTL 1.2) Thymeleaf 2.1.5 (Certains JSP 2.3 + JSTL 1.2)
Client DB/serveur JDBC / Derby 10.8.3.0 Spring JDBC 4.3.9 / Derby 10.12.1.1 (Pour Java 7), Ou 10.13.1.1 (Pour Java 8)
Client LDAP/serveur Apache DS Client API 1.0.0 / Server 1.5.5 Spring LDAP 2.3.1 / unboundid-ldapsdk 3.2.1
Email JavaMail 1.5.1 JavaMail 1.5.1 (Java Mail introduit par Spring Boot Mail 1.5.Remplacer 6)
Outils de développement Aucun Spring Boot Developer Tools 1.5.6
Java Prend en charge Java 6 et supérieur Prend en charge Java 7 et supérieur
  • Spring Security aurait dû être introduit pour cette vérification, mais malheureusement cela n'a pas encore été fait ...

Comment construire

Vous pouvez créer un fichier war exécutable et déployable avec la commande suivante:

$ mvn clean package

Méthode de développement

Il décrit également comment utiliser STS (Spring Tool Suite) pour parcourir, développer et déboguer le code source d'EasyBuggy Boot. STS est un IDE basé sur Eclipse, personnalisé pour faciliter le développement d'applications basées sur Spring.

  1. Téléchargez STS depuis cette page.

  2. git clone EasyBuggy Boot depuis GitHub.

    $ git clone https://github.com/k-tamura/easybuggy4sb
    $ cd easybuggy4sb
    
  3. Exécutez la commande suivante. Cette commande crée les fichiers nécessaires au développement STS (fichiers .project et .classpath). Vous pouvez également vous référer au code source des bibliothèques dépendantes.

    $ mvn dependency:sources
    $ mvn eclipse:eclipse
    
  4. Démarrez STS.

  5. Importez le projet cloné à partir de l'Explorateur de packages. Sélectionnez "Projets Maven existants" et cliquez sur "Suivant". Screenshot-Import .png Entrez le chemin d'accès au projet cloné dans le répertoire racine et cliquez sur Terminer. Screenshot-Import Maven Projects .png

  6. Cliquez avec le bouton droit sur le projet ʻeasybuggy4sb` dans l'Explorateur de packages et sélectionnez Déboguer en tant que, Spring Boot App pour lancer EasyBuggy Boot en mode débogage. Screenshot-Spring - easybuggy4sb-src-main-java-org-t246osslab-easybuggy4sb-Easybuggy4sbApplication.java - Spring Tool Suite .png

Assurez-vous également que lorsque vous modifiez le code source, il sera automatiquement rechargé pour refléter la modification.

Recommended Posts