MCPcopy Index your code
hub / github.com/WebGoat/WebGoat

github.com/WebGoat/WebGoat @v2025.3

repository ↗ · DeepWiki ↗ · release v2025.3 ↗ · Ask this repo → · + Follow
2,483 symbols 8,040 edges 464 files 201 documented · 8% updated 9d agov2025.3 · 2025-03-11★ 9,18934 open issues
README

Multi language support in WebGoat

WebGoat is mainly written in English, but it does support multiple languages.

Default language selection

  1. Current supported languages are: en, fr, de, nl
  2. The primary language is based on the language setting of the browser.
  3. If the language is not in the list of supported language, the language is English
  4. Once logged in, you can switch between the supported languages using a language dropdown menu on the main page
  5. After switching a language you are back at the Introduction page

Adding a new language

The following steps are required when you want to add a new language

  1. Update main_new.html
  2. Add the parts for showing the flag and providing the correct value for the flag= parameter 2.
  3. Add a flag image to src/main/resources/webgoat/static/css/img
  4. See the main_new.html for a link to download flag resources
  5. Add a welcome page to the introduction lesson
  6. Copy Introduction_.adoc to Introduction_es.adoc (if in this case you want to add Spanish)
  7. Add a highlighted section that explains that most parts of WebGoat will still be in English and invite people to translate parts where it would be valuable
  8. Translate the main labels
  9. Copy messages.properties to messages_es.properties (if in this case you want to add Spanish)
  10. Translate the label values
  11. Optionally translate lessons by
  12. Adding lang specifc adoc files in documentation folder of the lesson
  13. Adding WebGoatLabels.properties of a specific language if you want to
  14. Run mvn clean to see if the LabelAndHintIntegration test passes
  15. Run WebGoat and verify that your own language and the other languages work as expected

If you only want to translate more for a certain language, you only need to do step 4-8

Extension points exported contracts — how you extend this code

AssignmentEndpoint (Interface)
(no doc) [93 implementers]
src/main/java/org/owasp/webgoat/container/assignments/AssignmentEndpoint.java
Initializable (Interface)
Interface for initialization of a lesson. It is called when a new user is added to WebGoat and when a users reset a less [2 …
src/main/java/org/owasp/webgoat/container/lessons/Initializable.java
AuthenticationProvider (Interface)
@author Angel Olle Blazquez [1 implementers]
src/main/java/org/owasp/webgoat/lessons/hijacksession/cas/AuthenticationProvider.java
UserRepository (Interface)
@author nbaars @since 3/19/17.
src/main/java/org/owasp/webgoat/container/users/UserRepository.java
UserRepository (Interface)
@author nbaars @since 3/19/17.
src/main/java/org/owasp/webgoat/webwolf/user/UserRepository.java

Core symbols most depended-on inside this repo

$
called by 751
src/main/resources/webgoat/static/js/libs/backbone-min.js
build
called by 380
src/main/java/org/owasp/webgoat/container/assignments/AttackResultBuilder.java
apply
called by 370
src/main/java/org/owasp/webgoat/container/assignments/AttackResult.java
get
called by 322
src/main/java/org/owasp/webgoat/webwolf/requests/Requests.java
require
called by 247
src/main/resources/webgoat/static/js/libs/ace.js
failed
called by 200
src/main/java/org/owasp/webgoat/container/assignments/AttackResultBuilder.java
contains
called by 191
src/main/java/org/owasp/webgoat/webwolf/requests/WebWolfTraceRepository.java
feedback
called by 183
src/main/java/org/owasp/webgoat/container/assignments/AttackResultBuilder.java

Shape

Method 1,170
Function 922
Class 377
Interface 11
Enum 3

Languages

Java63%
TypeScript37%

Modules by API surface

src/main/resources/webgoat/static/js/libs/ace.js199 symbols
src/main/resources/webgoat/static/plugins/bootstrap-wysihtml5/js/wysihtml5-0.3.0.js172 symbols
src/main/resources/webgoat/static/js/libs/jquery.min.js83 symbols
src/main/resources/webgoat/static/js/jquery/jquery-1.10.2.min.js74 symbols
src/main/resources/webgoat/static/js/libs/underscore-min.js66 symbols
src/main/resources/webgoat/static/js/libs/jquery-2.1.4.min.js64 symbols
src/main/resources/webgoat/static/js/libs/jquery-ui-1.10.4.js52 symbols
src/main/resources/webgoat/static/js/libs/require.min.js31 symbols
src/main/resources/webgoat/static/js/modernizr.min.js22 symbols
src/main/java/org/owasp/webgoat/lessons/challenges/challenge7/MD5.java20 symbols
src/main/resources/webgoat/static/js/libs/backbone-min.js18 symbols
src/main/resources/webgoat/static/js/libs/jquery-ui.min.js17 symbols

Dependencies from manifests, versioned

cglib:cglib-nodep
com.auth0:java-jwt4.5.0 · 1×
com.auth0:jwks-rsa0.22.1 · 1×
com.github.terma:javaniotcpproxy1.6 · 1×
com.nulab-inc:zxcvbn
com.sun.xml.bind:jaxb-impl
com.thoughtworks.xstream:xstream
io.github.bonigarcia:webdrivermanager

For agents

$ claude mcp add WebGoat \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact