Refactoring (#1201)
* Some initial refactoring * Make it one application * Got it working * Fix problem on Windows * Move WebWolf * Move first lesson * Moved all lessons * Fix pom.xml * Fix tests * Add option to initialize a lesson This way we can create content for each user inside a lesson. The initialize method will be called when a new user is created or when a lesson reset happens * Clean up pom.xml files * Remove fetching labels based on language. We only support English at the moment, all the lesson explanations are written in English which makes it very difficult to translate. If we only had labels it would make sense to support multiple languages * Fix SonarLint issues * And move it all to the main project * Fix for documentation paths * Fix pom warnings * Remove PMD as it does not work * Update release notes about refactoring Update release notes about refactoring Update release notes about refactoring * Fix lesson template * Update release notes * Keep it in the same repo in Dockerhub * Update documentation to show how the connection is obtained. Resolves: #1180 * Rename all integration tests * Remove command from Dockerfile * Simplify GitHub actions Currently, we use a separate actions for pull-requests and branch build. This is now consolidated in one action. The PR action triggers always, it now only trigger when the PR is opened and not in draft. Running all platforms on a branch build is a bit too much, it is better to only run all platforms when someone opens a PR. * Remove duplicate entry from release notes * Add explicit registry for base image * Lesson scanner not working when fat jar When running the fat jar we have to take into account we are reading from the jar file and not the filesystem. In this case you cannot use `getFile` for example. * added info in README and fixed release docker * changed base image and added ignore file Co-authored-by: Zubcevic.com <rene@zubcevic.com>
This commit is contained in:
121
src/main/resources/webgoat/templates/about.html
Normal file
121
src/main/resources/webgoat/templates/about.html
Normal file
@ -0,0 +1,121 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
|
||||
<body>
|
||||
<div th:fragment="about" class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h3 class="modal-title" id="myModalLabel">About WebGoat - Provided by the OWASP Foundation</h3>
|
||||
</div>
|
||||
<div class="modal-body modal-scroll">
|
||||
<p>Thanks for hacking The Goat!</p>
|
||||
|
||||
<p>WebGoat is a demonstration of common web application flaws. The
|
||||
associated exercises are intended to provide hands-on experience with
|
||||
techniques aimed at demonstrating and testing application penetration.
|
||||
</p>
|
||||
|
||||
<p>From the entire WebGoat team, we appreciate your interest and efforts
|
||||
in making applications not just better, but safer and more secure for
|
||||
everyone. We, as well as our sacrificial goat, thank you.</p>
|
||||
|
||||
<p>
|
||||
Version: <span th:text="${@environment.getProperty('webgoat.build.version')}"></span>
|
||||
</p>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<p>Contact us:
|
||||
<ul>
|
||||
<li>WebGoat mailing list: <span th:text="${@environment.getProperty('webgoat.emaillist')}"></span></li>
|
||||
<li>Bruce Mayhew: <span th:text="${@environment.getProperty('webgoat.email')}"></span></li>
|
||||
</ul>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<p>WebGoat Authors
|
||||
<ul>
|
||||
<li>Bruce Mayhew (Author & Project Lead)</li>
|
||||
<li>Jeff Williams (Author & Original Idea)</li>
|
||||
<li>Jason White (Architect)</li>
|
||||
<li>Nanne Baars (Plugin & Platform Architecture)</li>
|
||||
<li>Richard Lawson (Architect)</li>
|
||||
</ul>
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<p>Active Contributors
|
||||
<ul>
|
||||
<li>Nanne Baars (Developer)</li>
|
||||
<li>Jason White (Developer)</li>
|
||||
<li>Doug Morato (Developer & CI)</li>
|
||||
<li>Bruce Mayhew (Developer)</li>
|
||||
<li>René Zubcevic (Developer)</li>
|
||||
</ul>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<p>WebGoat Design Team (Active)
|
||||
<ul>
|
||||
<li>Nanne Baars (Plugin & Platform Architecture)</li>
|
||||
<li>Bruce Mayhew (Goat Herder)</li>
|
||||
<li>Jason White (User Interface)</li>
|
||||
</ul>
|
||||
</p><br/>
|
||||
|
||||
<p>Corporate Sponsorship - Companies that have donated significant time to WebGoat development
|
||||
<ul>
|
||||
<li>Aspect Security</li>
|
||||
<li>Ounce Labs</li>
|
||||
</ul>
|
||||
</p><br/>
|
||||
|
||||
<p>Did we miss you? Our sincere apologies, as we know there have
|
||||
been many contributors over the years. If your name does not
|
||||
appear in any of the lists above, please send us a note. We'll
|
||||
get you added with no further sacrifices required.</p>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<p>Past Contributors
|
||||
<ul>
|
||||
<li>Richard Lawson (Architect)</li>
|
||||
<li>Michael Dever (Developer)</li>
|
||||
<li>Jeff Wayman (Docs)</li>
|
||||
<li>Dave Cowden (Everything)</li>
|
||||
<li>Richard Lawson (Service Layer)</li>
|
||||
<li>Keith Gasser (Survey/Security)</li>
|
||||
<li>Devin Mayhew (Setup/Admin)</li>
|
||||
<li>Li Simon (Developer)</li>
|
||||
<li>Ali Looney (UI Design)</li>
|
||||
<li>David Anderson (Developer/Design)</li>
|
||||
<li>Christopher Blum (Lessons)</li>
|
||||
<li>Laurence Casey (Graphics)</li>
|
||||
<li>Brian Ciomei (Bug fixes)</li>
|
||||
<li>Rogan Dawes (Lessons)</li>
|
||||
<li>Erwin Geirnaert (Solutions)</li>
|
||||
<li>Aung Knant (Documentation)</li>
|
||||
<li>Ryan Knell (Lessons)</li>
|
||||
<li>Christine Koppeit (Build)</li>
|
||||
<li>Sherif Kousa (Lessons/Documentation)</li>
|
||||
<li>Reto Lippuner (Lessons)</li>
|
||||
<li>PartNet (Lessons)</li>
|
||||
<li>Yiannis Pavlosoglou (Lessons)</li>
|
||||
<li>Eric Sheridan (Lessons)</li>
|
||||
<li>Alex Smolen (Lessons)</li>
|
||||
<li>Chuck Willis (Lessons)</li>
|
||||
<li>Marcel Wirth (Lessons)</li>
|
||||
</ul>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
13
src/main/resources/webgoat/templates/lesson_content.html
Normal file
13
src/main/resources/webgoat/templates/lesson_content.html
Normal file
@ -0,0 +1,13 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
|
||||
|
||||
<!-- Model is setup in the class StartLesson -->
|
||||
<div id="lessonInstructions"></div>
|
||||
|
||||
<div id="message" class="info" th:utext="${message}"></div>
|
||||
<br/>
|
||||
|
||||
<div th:replace="lesson:__'lessons/' + ${lesson.package} + '/html/' + ${lesson.id} + '.html'__"></div>
|
||||
|
||||
</html>
|
52
src/main/resources/webgoat/templates/login.html
Normal file
52
src/main/resources/webgoat/templates/login.html
Normal file
@ -0,0 +1,52 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<title th:text="#{login.page.title}">Login Page</title>
|
||||
<link rel="shortcut icon" th:href="@{/css/img/favicon.ico}" type="image/x-icon"/>
|
||||
<link rel="stylesheet" type="text/css" th:href="@{/css/main.css}"/>
|
||||
<link rel="stylesheet" type="text/css" th:href="@{/plugins/bootstrap/css/bootstrap.min.css}"/>
|
||||
<link rel="stylesheet" type="text/css" th:href="@{/css/font-awesome.min.css}"/>
|
||||
<link rel="stylesheet" type="text/css" th:href="@{/css/animate.css}"/>
|
||||
</head>
|
||||
<body>
|
||||
<section id="container">
|
||||
<header id="header">
|
||||
<div class="brand">
|
||||
<a th:href="@{/start.mvc}" class="logo"><span>Web</span>Goat</a>
|
||||
</div>
|
||||
<div class="lessonTitle">
|
||||
</div>
|
||||
|
||||
</header>
|
||||
<section class="main-content-wrapper">
|
||||
|
||||
<section id="main-content">
|
||||
<div th:if="${param.error}">
|
||||
<p th:text="#{invalid_username_password}">Invalid username and password.</p>
|
||||
</div>
|
||||
<div th:if="${param.logout}">
|
||||
<p th:text="#{logged_out}">You've been logged out successfully.</p>
|
||||
</div>
|
||||
<br/><br/>
|
||||
<form th:action="@{/login}" method='POST' style="width: 200px;">
|
||||
<div class="form-group">
|
||||
<label for="exampleInputEmail1" th:text="#{username}">Username</label>
|
||||
<input autofocus="dummy_for_thymeleaf_parser" type="text" class="form-control"
|
||||
id="exampleInputEmail1" placeholder="Username" name='username' />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="exampleInputPassword1" th:text="#{password}">Password</label>
|
||||
<input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password"
|
||||
name='password' />
|
||||
</div>
|
||||
<button class="btn btn-primary btn-block" type="submit" th:text="#{sign.in}">Sign in</button>
|
||||
<div class="text-center"><a th:href="@{/registration}" th:text="#{register.new}"></a></div>
|
||||
</form>
|
||||
<br/><br/>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
182
src/main/resources/webgoat/templates/main_new.html
Normal file
182
src/main/resources/webgoat/templates/main_new.html
Normal file
@ -0,0 +1,182 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
|
||||
xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
|
||||
<head>
|
||||
<meta http-equiv="Expires" CONTENT="-1"/>
|
||||
<meta http-equiv="Pragma" CONTENT="no-cache"/>
|
||||
<meta http-equiv="Cache-Control" CONTENT="no-cache"/>
|
||||
<meta http-equiv="Cache-Control" CONTENT="no-store"/>
|
||||
|
||||
<!-- CSS -->
|
||||
<link rel="shortcut icon" th:href="@{/css/img/favicon.ico}" type="image/x-icon"/>
|
||||
|
||||
<link rel="stylesheet" type="text/css" th:href="@{/css/main.css}"/>
|
||||
<link rel="stylesheet" type="text/css" th:href="@{/plugins/bootstrap/css/bootstrap.min.css}"/>
|
||||
<link rel="stylesheet" type="text/css" th:href="@{/css/font-awesome.min.css}"/>
|
||||
<link rel="stylesheet" type="text/css" th:href="@{/css/animate.css}"/>
|
||||
<link rel="stylesheet" type="text/css" th:href="@{/css/coderay.css}"/>
|
||||
<!-- <link rel="stylesheet" type="text/css" th:href="@{/css/asciidoctor-default.css}"/>-->
|
||||
|
||||
<!-- end of CSS -->
|
||||
|
||||
<!-- JS -->
|
||||
<!-- <script src="js/modernizr.min.js"></script>-->
|
||||
|
||||
<!-- Require.js used to load js asynchronously -->
|
||||
<script src="js/libs/require.min.js" data-main="js/main"></script>
|
||||
<meta http-equiv="Content-Type" content="text/id; charset=ISO-8859-1"/>
|
||||
<title>WebGoat</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<section id="container">
|
||||
<header id="header">
|
||||
<!--logo start-->
|
||||
<div class="brand">
|
||||
<a th:href="@{/welcome.mvc}" class="logo"><span>Web</span>Goat</a>
|
||||
</div>
|
||||
<!--logo end-->
|
||||
<div id="lesson-title-wrapper">
|
||||
|
||||
</div><!--lesson title end-->
|
||||
<div class="user-nav pull-right" id="user-and-info-nav" style="margin-right: 75px;">
|
||||
<a th:href="@{/WebWolf}" target="_blank">
|
||||
<button type="button" id="webwolf-button" class="btn btn-default right_nav_button"
|
||||
title="WebWolf">
|
||||
<img th:src="@{/css/img/wolf.svg}"></img>
|
||||
</button>
|
||||
</a>
|
||||
<div class="dropdown" style="display:inline">
|
||||
<button type="button" data-toggle="dropdown" class="btn btn-default dropdown-toggle" id="user-menu">
|
||||
<i class="fa fa-user"></i> <span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu dropdown-menu-left">
|
||||
<li role="presentation"><a role="menuitem" tabindex="-1" th:href="@{/logout}"
|
||||
th:text="#{logout}">Logout</a></li>
|
||||
<li role="presentation" class="divider"></li>
|
||||
<li role="presentation" class="disabled"><a role="menuitem" tabindex="-1" href="#">User: <span sec:authentication="name"></span></a>
|
||||
</li>
|
||||
<li role="presentation" class="disabled"><a role="menuitem" tabindex="-1" href="#">Role:
|
||||
<span sec:authorize="hasAuthority('WEBGOAT_USER')">User</span>
|
||||
<span sec:authorize="hasAuthority('WEBGOAT_ADMIN')">Admin</span>
|
||||
</a>
|
||||
</li>
|
||||
<li role="presentation" class="divider"></li>
|
||||
<li role="presentation" class="disabled"><a role="menuitem" tabindex="-1" href="#">
|
||||
<span th:text="#{version}">Version:</span><span>: </span>
|
||||
<span th:text="${@environment.getProperty('webgoat.build.version')}"></span></a>
|
||||
</li>
|
||||
<li role="presentation" class="disabled"><a role="menuitem" tabindex="-1" href="#">
|
||||
<span th:text="#{build}">Build:</span><span>: </span>
|
||||
<span th:text="${@environment.getProperty('webgoat.build.number')}"></span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div style="display:inline" id="settings">
|
||||
<!--<button type="button" id="admin-button" class="btn btn-default right_nav_button" title="Administrator">-->
|
||||
<!--<i class="fa fa-cog"></i>-->
|
||||
<!--</button>-->
|
||||
<a href="#reportCard">
|
||||
<button type="button" id="report-card-button" class="btn btn-default right_nav_button button-up"
|
||||
th:title="#{report.card}">
|
||||
<i class="fa fa-bar-chart-o"></i>
|
||||
</button>
|
||||
</a>
|
||||
<!--<button type="button" id="user-management" class="btn btn-default right_nav_button"-->
|
||||
<!--title="User management">-->
|
||||
<!--<i class="fa fa-users"></i>-->
|
||||
<!--</button>-->
|
||||
</div>
|
||||
<button type="button" id="about-button" class="btn btn-default right_nav_button" th:title="#{about}"
|
||||
data-toggle="modal" data-target="#about-modal">
|
||||
<i class="fa fa-info"></i>
|
||||
</button>
|
||||
<a th:href="'mailto:' + ${@environment.getProperty('webgoat.email')} + '?Subject=Webgoat%20feedback'" target="_top">
|
||||
<button type="button" class="btn btn-default right_nav_button" data-toggle="tooltip"
|
||||
th:title="#{contact}">
|
||||
<i class="fa fa-envelope"></i>
|
||||
</button>
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<aside class="sidebar">
|
||||
<div id="menu-container"></div>
|
||||
</aside>
|
||||
<!--sidebar left end-->
|
||||
|
||||
<!--main content start-->
|
||||
<section class="main-content-wrapper">
|
||||
<section id="main-content">
|
||||
<div id="lesson-page" class="pages">
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<div class="col-md-12" align="left">
|
||||
<div id="lesson-content-wrapper" class="panel">
|
||||
<div class="" id="error-notification-container">
|
||||
<div class="" id="error-notification">
|
||||
<i class="fa fa-exclamation-circle"> There was an unexpected error. Please try
|
||||
again.</i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="" id="help-controls">
|
||||
<button class="btn btn-primary btn-xs btn-danger help-button"
|
||||
id="show-hints-button" th:text="#{show.hints}">Show hints
|
||||
</button>
|
||||
|
||||
<button class="btn btn-xs help-button" id="restart-lesson-button"
|
||||
th:text="#{reset.lesson}">Reset Lesson
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="lesson-hint" id="lesson-hint-container">
|
||||
<!--<h4>Hints</h4>-->
|
||||
<div class="panel">
|
||||
<div id="message" class="info" th:utext="${message}"></div>
|
||||
<div class="panel-body" id="lesson-hint">
|
||||
<span class="glyphicon-class glyphicon glyphicon-circle-arrow-left"
|
||||
id="show-prev-hint"></span>
|
||||
<span class="glyphicon-class glyphicon glyphicon-circle-arrow-right"
|
||||
id="show-next-hint"></span>
|
||||
<br/>
|
||||
<span id="lesson-hint-content"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="lesson-hint" id="lesson-overview-container">
|
||||
<div class="panel">
|
||||
<div class="panel-body" id="lesson-overview"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="lesson-page-controls">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="lesson-content">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="report-card-page" class="pages" style="display: none;">
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
<!-- About WebGoat Modal -->
|
||||
<div class="modal" id="about-modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg">
|
||||
<div class="modal-content" th:replace="about :: about"></div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
|
||||
</html>
|
102
src/main/resources/webgoat/templates/registration.html
Normal file
102
src/main/resources/webgoat/templates/registration.html
Normal file
@ -0,0 +1,102 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<title th:text="#{login.page.title}">Login Page</title>
|
||||
<link rel="stylesheet" type="text/css" th:href="@{/css/main.css}"/>
|
||||
<link rel="stylesheet" type="text/css" th:href="@{/plugins/bootstrap/css/bootstrap.min.css}"/>
|
||||
<link rel="stylesheet" type="text/css" th:href="@{/css/font-awesome.min.css}"/>
|
||||
<link rel="stylesheet" type="text/css" th:href="@{/css/animate.css}"/>
|
||||
</head>
|
||||
<body>
|
||||
<section id="container">
|
||||
<header id="header">
|
||||
<div class="brand">
|
||||
<a th:href="@{/start.mvc}" class="logo"><span>Web</span>Goat</a>
|
||||
</div>
|
||||
<div class="lessonTitle">
|
||||
</div>
|
||||
|
||||
</header>
|
||||
<section class="main-content-wrapper">
|
||||
|
||||
<section id="main-content">
|
||||
<br/><br/>
|
||||
<fieldset>
|
||||
<legend th:text="#{register.title}">Please Sign Up</legend>
|
||||
<form class="form-horizontal" action="#" th:action="@{/register.mvc}" th:object="${userForm}"
|
||||
method='POST'>
|
||||
|
||||
<div class="form-group" th:classappend="${#fields.hasErrors('username')}? 'has-error'">
|
||||
<label for="username" class="col-sm-2 control-label" th:text="#{username}">Username</label>
|
||||
<div class="col-sm-4">
|
||||
<input autofocus="dummy_for_thymeleaf_parser" type="text" class="form-control"
|
||||
th:field="*{username}"
|
||||
id="username" placeholder="Username" name='username'/>
|
||||
</div>
|
||||
<span th:if="${#fields.hasErrors('username')}" th:errors="*{username}">Username error</span>
|
||||
</div>
|
||||
<div class="form-group" th:classappend="${#fields.hasErrors('password')}? 'has-error'">
|
||||
<label for="password" class="col-sm-2 control-label" th:text="#{password}">Password</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="password" class="form-control" id="password" placeholder="Password"
|
||||
name='password' th:value="*{password}"/>
|
||||
</div>
|
||||
<span th:if="${#fields.hasErrors('password')}" th:errors="*{password}">Password error</span>
|
||||
</div>
|
||||
<div class="form-group" th:classappend="${#fields.hasErrors('matchingPassword')}? 'has-error'">
|
||||
<label for="matchingPassword" class="col-sm-2 control-label" th:text="#{password.confirm}">Confirm
|
||||
password</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="password" class="form-control" id="matchingPassword" placeholder="Password"
|
||||
name='matchingPassword' th:value="*{matchingPassword}"/>
|
||||
</div>
|
||||
<span th:if="${#fields.hasErrors('matchingPassword')}" th:errors="*{matchingPassword}">Password error</span>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="form-group" th:classappend="${#fields.hasErrors('agree')}? 'has-error'">
|
||||
<label class="col-sm-2 control-label">Terms of use</label>
|
||||
<div class="col-sm-6">
|
||||
<div style="border: 1px solid #e5e5e5; height: 200px; overflow: auto; padding: 10px;">
|
||||
<p>
|
||||
While running this program your machine will be extremely
|
||||
vulnerable to attack. You should disconnect from the Internet while using
|
||||
this program. WebGoat's default configuration binds to localhost to minimize
|
||||
the exposure.
|
||||
</p>
|
||||
<p>
|
||||
This program is for educational purposes only. If you attempt
|
||||
these techniques without authorization, you are very likely to get caught. If
|
||||
you are caught engaging in unauthorized hacking, most companies will fire you.
|
||||
Claiming that you were doing security research will not work as that is the
|
||||
first thing that all hackers claim.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" th:classappend="${#fields.hasErrors('agree')}? 'has-error'">
|
||||
<div class="col-sm-6 col-sm-offset-2">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" name="agree" value="agree"/>Agree with the terms and
|
||||
conditions
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-sm-offset-2 col-sm-6">
|
||||
<button type="submit" class="btn btn-primary" th:text="#{sign.up}">Sign up</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</fieldset>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
55
src/main/resources/webgoat/templates/scoreboard.html
Normal file
55
src/main/resources/webgoat/templates/scoreboard.html
Normal file
@ -0,0 +1,55 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
|
||||
xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
|
||||
<head>
|
||||
<meta http-equiv="Expires" CONTENT="-1"/>
|
||||
<meta http-equiv="Pragma" CONTENT="no-cache"/>
|
||||
<meta http-equiv="Cache-Control" CONTENT="no-cache"/>
|
||||
<meta http-equiv="Cache-Control" CONTENT="no-store"/>
|
||||
|
||||
<!-- CSS -->
|
||||
<link rel="shortcut icon" th:href="@{/images/favicon.ico}" type="image/x-icon"/>
|
||||
|
||||
<!-- Require.js used to load js asynchronously -->
|
||||
<script src="js/libs/require.min.js" data-main="js/scoreboard.js"></script>
|
||||
<!-- main css -->
|
||||
<link rel="stylesheet" type="text/css" th:href="@{/css/main.css}"/>
|
||||
<link rel="stylesheet" type="text/css" th:href="@{/plugins/bootstrap/css/bootstrap.min.css}"/>
|
||||
<link rel="stylesheet" type="text/css" th:href="@{/css/font-awesome.min.css}"/>
|
||||
|
||||
<meta http-equiv="Content-Type" content="text/id; charset=ISO-8859-1"/>
|
||||
<title>WebGoat</title>
|
||||
</head>
|
||||
<!-- <body class="scoreboard-page"> -->
|
||||
<body>
|
||||
<header id="header">
|
||||
<!--logo start-->
|
||||
<div class="brand">
|
||||
<a th:href="@{/welcome.mvc}" class="logo"><span>Web</span>Goat</a>
|
||||
</div>
|
||||
<!--logo end-->
|
||||
<div id="lesson-title-wrapper">
|
||||
<h1 id="lesson-title">WebGoat challenges ranking</h1>
|
||||
</div><!--lesson title end-->
|
||||
<div class="user-nav pull-right" id="user-and-info-nav" style="margin-right: 75px;">
|
||||
</div>
|
||||
</header>
|
||||
<section id="container">
|
||||
<!--main content start-->
|
||||
<section class="main-content-wrapper">
|
||||
<section id="main-content">
|
||||
|
||||
<div id="scoreboard-wrapper">
|
||||
<div id="scoreboard">
|
||||
<!-- will use _ template here -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
</body>
|
||||
|
||||
|
||||
</html>
|
Reference in New Issue
Block a user