diff --git a/README.MD b/README.MD index 947670062..df4546bae 100644 --- a/README.MD +++ b/README.MD @@ -154,4 +154,10 @@ Browse to [http://localhost:8080/WebGoat](http://localhost:8080/WebGoat) and hap ## Reloading plugins If you want to reload all the plugin visit the following url: `http://localhost:8080/WebGoat/service/reloadplugins.mvc` -in a new browser tab. After reloading a message will appear and you can refresh the WebGoat browser tab. \ No newline at end of file +in a new browser tab. After reloading a message will appear and you can refresh the WebGoat browser tab. + +## Debugging label properties + +To be able to see which labels are loaded through a property file you first need to visit the following url: +`http://localhost:8080/WebGoat/service/debug/labels.mvc` in a new browser tab. Switch back to the WebGoat page and +reload this page. After this labels which load label from the property file will marked green. \ No newline at end of file diff --git a/webgoat-container/pom.xml b/webgoat-container/pom.xml index 50b89a045..9f9fc90f5 100644 --- a/webgoat-container/pom.xml +++ b/webgoat-container/pom.xml @@ -345,6 +345,11 @@ spring-core ${org.springframework.version} + + org.springframework + spring-aop + ${org.springframework.version} + diff --git a/webgoat-container/src/main/java/org/owasp/webgoat/service/LabelDebugService.java b/webgoat-container/src/main/java/org/owasp/webgoat/service/LabelDebugService.java new file mode 100644 index 000000000..42f2cef36 --- /dev/null +++ b/webgoat-container/src/main/java/org/owasp/webgoat/service/LabelDebugService.java @@ -0,0 +1,67 @@ +/** + * ************************************************************************************************* + * + * + * This file is part of WebGoat, an Open Web Application Security Project + * utility. For details, please see http://www.owasp.org/ + * + * Copyright (c) 2002 - 20014 Bruce Mayhew + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any later + * version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program; if not, write to the Free Software Foundation, Inc., 59 Temple + * Place - Suite 330, Boston, MA 02111-1307, USA. + * + * Getting Source ============== + * + * Source for this application is maintained at + * https://github.com/WebGoat/WebGoat, a repository for free software projects. + * + * For details, please see http://webgoat.github.io + */ +package org.owasp.webgoat.service; + +import org.owasp.webgoat.session.LabelDebugger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

PluginReloadService class.

+ * + * @author nbaars + * @version $Id: $Id + */ +@Controller +public class LabelDebugService extends BaseService { + + private static final Logger logger = LoggerFactory.getLogger(LabelDebugService.class); + + @Autowired + private LabelDebugger labelDebugger; + + /** + * Reload all the plugins + */ + @RequestMapping(value = "/debug/labels.mvc") + public @ResponseBody + //todo parse params to add enable / disable + ResponseEntity reloadPlugins() { + labelDebugger.enable(); + return new ResponseEntity("Label debugger enabled refresh the WebGoat page!",HttpStatus.OK); + } +} diff --git a/webgoat-container/src/main/java/org/owasp/webgoat/session/LabelDebugger.java b/webgoat-container/src/main/java/org/owasp/webgoat/session/LabelDebugger.java new file mode 100644 index 000000000..362d64b3d --- /dev/null +++ b/webgoat-container/src/main/java/org/owasp/webgoat/session/LabelDebugger.java @@ -0,0 +1,17 @@ +package org.owasp.webgoat.session; + +/** + */ +public class LabelDebugger { + + private boolean isEnabled = false; + + public boolean isEnabled() { + return isEnabled; + } + + public void enable() { + this.isEnabled = true; + } + +} diff --git a/webgoat-container/src/main/java/org/owasp/webgoat/util/LabelManagerImpl.java b/webgoat-container/src/main/java/org/owasp/webgoat/util/LabelManagerImpl.java index 23c2c0a8f..a72988949 100644 --- a/webgoat-container/src/main/java/org/owasp/webgoat/util/LabelManagerImpl.java +++ b/webgoat-container/src/main/java/org/owasp/webgoat/util/LabelManagerImpl.java @@ -1,6 +1,7 @@ package org.owasp.webgoat.util; +import org.owasp.webgoat.session.LabelDebugger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -45,6 +46,8 @@ public class LabelManagerImpl implements LabelManager, Serializable @Autowired private transient LabelProvider labelProvider; + @Autowired + private transient LabelDebugger labelDebugger; /** Locale mapped with current session. */ private Locale locale = new Locale(LabelProvider.DEFAULT_LANGUAGE); @@ -75,7 +78,11 @@ public class LabelManagerImpl implements LabelManager, Serializable /** {@inheritDoc} */ public String get(String labelKey) { - return labelProvider.get(locale, labelKey); + String label = labelProvider.get(locale, labelKey); + if (labelDebugger.isEnabled()) { + label = "" + label + ""; + } + return label; } } diff --git a/webgoat-container/src/main/webapp/WEB-INF/mvc-dispatcher-servlet.xml b/webgoat-container/src/main/webapp/WEB-INF/mvc-dispatcher-servlet.xml index 3e60f1024..ea1edbde8 100644 --- a/webgoat-container/src/main/webapp/WEB-INF/mvc-dispatcher-servlet.xml +++ b/webgoat-container/src/main/webapp/WEB-INF/mvc-dispatcher-servlet.xml @@ -4,12 +4,16 @@ xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" + xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/mvc - http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"> + http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd + http://www.springframework.org/schema/aop + http://www.springframework.org/schema/aop/spring-aop-3.2.xsd"> + @@ -38,7 +42,12 @@ p:prefix="/WEB-INF/pages/" p:suffix=".jsp" p:order="1"/> - + + + + + +