我用Spring Boot做了一个充满错误的网络应用程序克隆

简而言之

我尝试用基于Spring Boot的方式创建了之前介绍过的充满漏洞的Web应用程序”EasyBuggy”的克隆版本(”EasyBuggy Boot”)。

你可以从这里下载,并使用以下命令启动。

java -jar ROOT.war
※起動するにはJava 7以上が必要です。java -jar ROOT.war --port=9000とすると9000番ポートで起動します。

如果您按照以下Java选项进行设置,您将能够进行日志输出、调试和通过JMX进行监视(请注意这是适用于Java 7的选项)。此外,由于最大内存使用量已限制,因此更容易发生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

如果你看到以下的信息,那就代表Web应用已经成功启动了。

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)

当您访问 http://localhost:8080,将会显示主页。

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

除了上面提到的启动方法以外

可以使用git clone命令进行克隆,然后使用mvn clean spring-boot:run命令进行清理和启动。

$ git clone https://github.com/k-tamura/easybuggy4sb
$ cd easybuggy4sb
$ mvn clean spring-boot:run
src/main/resources/application.propertiesserver.port=${port:8080}の行をserver.port=9000にとすると9000番ポートで起動します。

此外,将ROOT.war部署到Tomcat 8.5等Java容器也会以相同的方式运行。

此应用的用途是什么?

目的是像「EasyBuggy」一样,模拟各种障碍,进行分析并加深理解。之所以创造出具有相同功能的东西,是因为我想了解以下内容(个人兴趣)。

    • 最新のフレームワーク(Spring Boot)ベースのアプリにも脆弱性やリソースリークをつくり込むことは簡単にできるか

 

    • レガシーアプリをSpring Bootに移行する上で必要な作業は何か

 

    • レガシーアプリをSpring Bootに移行することで可読性は向上するか

 

    レガシーアプリと比較して、Spring Bootの開発生産性はどの程度の違うか

我计划在以后的另一篇文章中公开这些内容。尽管是出于个人兴趣创建的,但我认为它们也可以用于以下用途。

    • Spring Bootベースのアプリに脆弱性をつくり込んでしまう実装例を把握する

 

    レガシーアプリからSpring Bootベースのアプリへ移行する際の参考にする

構成的差異

「EasyBuggy」和「EasyBuggy Boot」的主要构成差异如下。

相違点EasyBuggyEasyBuggy Bootベースとなる技術Servlet 3.0.1Spring Boot 1.5.6 (Servlet 3.0.1)プレゼンテーション層未使用 (一部 JSP 2.2 + JSTL 1.2)Thymeleaf 2.1.5 (一部 JSP 2.3 + JSTL 1.2)DBクライアント/サーバーJDBC / Derby 10.8.3.0Spring JDBC 4.3.9 / Derby 10.12.1.1 (Java 7の場合)、または10.13.1.1 (Java 8の場合)LDAPクライアント/サーバーApache DS Client API 1.0.0 / Server 1.5.5Spring LDAP 2.3.1 / unboundid-ldapsdk 3.2.1メールJavaMail 1.5.1JavaMail 1.5.1 (Spring Boot Mailで導入されるJavaMail 1.5.6をオーバーライド)開発ツール無しSpring Boot Developer Tools 1.5.6JavaJava 6以上をサポートJava 7以上をサポート

很遗憾,目前尚未能够引入Spring Security来进行此验证。

建筑的方法

你可以使用以下命令来创建可执行且可部署的war文件。

$ mvn clean package

开发方法

我会提供使用STS(Spring Tool Suite)来查看、开发和调试EasyBuggy Boot源代码的方法。STS是基于Eclipse的集成开发环境,专门定制用于简化Spring应用程序的开发过程。

Screenshot-Spring - easybuggy4sb-src-main-java-org-t246osslab-easybuggy4sb-Easybuggy4sbApplication.java - Spring Tool Suite .png

请尝试修改源代码,自动重新加载并确认修改已反映。

广告
将在 10 秒后关闭
bannerAds