Report from the scan performed on 2020-03-15 at 21:47:33 for https://github.com/AppThreat/WebGoat
This report was generated by AppThreat from the SAST scan invocation on 2020-03-15 at 21:47:33. The scan used the open source tool Static code analysis by PMD to scan the source code repository https://github.com/AppThreat/WebGoat.
Below is a summary of the issues identified:
| Severity | Count |
|---|---|
| CRITICAL | 0 |
| HIGH | 0 |
| MEDIUM | 0 |
| LOW | 92 |
| TOTAL | 92 |
Based on this report, the application is certified as ready for deployment to test and production environments. Please refer to the dependency and container scan reports (if available) for additional context.
| Rule | Severity | Source location | Message |
|---|---|---|---|
| Performance | LOW | WebWolfMacro.java |
String.indexOf(char) is faster than String.indexOf(String).
|
| Performance | LOW | Lesson.java |
Avoid using redundant field initializer for 'id'.
|
| Performance | LOW | LessonMenuItem.java |
StringBuffer constructor is initialized with size 16, but has at least 18 characters appended.
|
| Performance | LOW | LessonMenuItem.java |
StringBuffer (or StringBuilder).append is called 2 consecutive times with literals. Use a single append with a single combined String.
|
| Performance | LOW | LessonMenuItem.java |
StringBuffer (or StringBuilder).append is called consecutively without reusing the target variable.
|
| Performance | LOW | LessonMenuService.java |
Avoid instantiating new objects inside loops.
|
| Performance | LOW | LessonMenuService.java |
Avoid instantiating new objects inside loops.
|
| Performance | LOW | LessonProgressService.java |
Avoid instantiating new objects inside loops.
|
| Performance | LOW | LessonProgressService.java |
Avoid instantiating new objects inside loops.
|
| Performance | LOW | ReportCardService.java |
Avoid instantiating new objects inside loops.
|
| Performance | LOW | SessionService.java |
StringBuffer constructor is initialized with size 16, but has at least 145 characters appended.
|
| Performance | LOW | SessionService.java |
Avoid appending characters as strings in StringBuffer.append.
|
| Performance | LOW | SessionService.java |
StringBuffer (or StringBuilder).append is called 2 consecutive times with literals. Use a single append with a single combined String.
|
| Performance | LOW | SessionService.java |
StringBuffer (or StringBuilder).append is called 3 consecutive times with literals. Use a single append with a single combined String.
|
| Performance | LOW | SessionService.java |
StringBuffer (or StringBuilder).append is called consecutively without reusing the target variable.
|
| Performance | LOW | SessionService.java |
Avoid appending characters as strings in StringBuffer.append.
|
| Performance | LOW | SessionService.java |
StringBuffer (or StringBuilder).append is called 3 consecutive times with literals. Use a single append with a single combined String.
|
| Performance | LOW | SessionService.java |
StringBuffer (or StringBuilder).append is called consecutively without reusing the target variable.
|
| Performance | LOW | SessionService.java |
Avoid appending characters as strings in StringBuffer.append.
|
| Performance | LOW | SessionService.java |
StringBuffer (or StringBuilder).append is called 3 consecutive times with literals. Use a single append with a single combined String.
|
| Performance | LOW | SessionService.java |
StringBuffer (or StringBuilder).append is called consecutively without reusing the target variable.
|
| Performance | LOW | SessionService.java |
Avoid appending characters as strings in StringBuffer.append.
|
| Performance | LOW | SessionService.java |
StringBuffer (or StringBuilder).append is called 3 consecutive times with literals. Use a single append with a single combined String.
|
| Performance | LOW | SessionService.java |
StringBuffer (or StringBuilder).append is called consecutively without reusing the target variable.
|
| Performance | LOW | SessionService.java |
Avoid appending characters as strings in StringBuffer.append.
|
| Performance | LOW | SessionService.java |
StringBuffer (or StringBuilder).append is called 3 consecutive times with literals. Use a single append with a single combined String.
|
| Performance | LOW | SessionService.java |
StringBuffer (or StringBuilder).append is called consecutively without reusing the target variable.
|
| Performance | LOW | SessionService.java |
Avoid appending characters as strings in StringBuffer.append.
|
| Performance | LOW | SessionService.java |
StringBuffer (or StringBuilder).append is called 2 consecutive times with literals. Use a single append with a single combined String.
|
| Performance | LOW | SessionService.java |
StringBuffer (or StringBuilder).append is called consecutively without reusing the target variable.
|
| Performance | LOW | SessionService.java |
Do not add empty strings.
|
| Performance | LOW | SessionService.java |
Avoid appending characters as strings in StringBuffer.append.
|
| Performance | LOW | LabelDebugger.java |
Avoid using redundant field initializer for 'enabled'.
|
| Performance | LOW | LessonTracker.java |
Avoid using redundant field initializer for 'numberOfAttempts'.
|
| Performance | LOW | Scoreboard.java |
Avoid instantiating new objects inside loops.
|
| Performance | LOW | Assignment7.java |
String.indexOf(char) is faster than String.indexOf(String).
|
| Performance | LOW | MD5.java |
Avoid instantiating new objects inside loops.
|
| Performance | LOW | MD5.java |
Avoid instantiating FileInputStream, FileOutputStream, FileReader, or FileWriter.
|
| Performance | LOW | MD5.java |
Avoid instantiating FileInputStream, FileOutputStream, FileReader, or FileWriter.
|
| Performance | LOW | MD5.java |
Avoid appending characters as strings in StringBuffer.append.
|
| Performance | LOW | Assignment8.java |
Do not add empty strings.
|
| Performance | LOW | Salaries.java |
Avoid instantiating FileInputStream, FileOutputStream, FileReader, or FileWriter.
|
| Performance | LOW | Salaries.java |
Avoid instantiating FileInputStream, FileOutputStream, FileReader, or FileWriter.
|
| Performance | LOW | Salaries.java |
StringBuffer constructor is initialized with size 16, but has at least 145 characters appended.
|
| Performance | LOW | Salaries.java |
StringBuffer (or StringBuilder).append is called 5 consecutive times with literals. Use a single append with a single combined String.
|
| Performance | LOW | Salaries.java |
StringBuffer (or StringBuilder).append is called consecutively without reusing the target variable.
|
| Performance | LOW | Salaries.java |
StringBuffer (or StringBuilder).append is called consecutively without reusing the target variable.
|
| Performance | LOW | Salaries.java |
StringBuffer (or StringBuilder).append is called consecutively without reusing the target variable.
|
| Performance | LOW | Salaries.java |
StringBuffer (or StringBuilder).append is called consecutively without reusing the target variable.
|
| Performance | LOW | Salaries.java |
Avoid instantiating new objects inside loops.
|
| Performance | LOW | CrossSiteScriptingLesson1.java |
Avoid calling toString() on String objects; this is unnecessary.
|
| Performance | LOW | CrossSiteScriptingLesson5a.java |
StringBuffer constructor is initialized with size 16, but has at least 200 characters appended.
|
| Performance | LOW | CrossSiteScriptingLesson5a.java |
StringBuffer (or StringBuilder).append is called 2 consecutive times with literals. Use a single append with a single combined String.
|
| Performance | LOW | CrossSiteScriptingLesson5a.java |
StringBuffer (or StringBuilder).append is called consecutively without reusing the target variable.
|
| Performance | LOW | CrossSiteScriptingLesson5a.java |
StringBuffer (or StringBuilder).append is called 3 consecutive times with literals. Use a single append with a single combined String.
|
| Performance | LOW | CrossSiteScriptingLesson5a.java |
StringBuffer (or StringBuilder).append is called consecutively without reusing the target variable.
|
| Performance | LOW | CrossSiteScriptingLesson5a.java |
StringBuffer (or StringBuilder).append is called consecutively without reusing the target variable.
|
| Performance | LOW | CrossSiteScriptingLesson5a.java |
Avoid concatenating nonliterals in a StringBuffer/StringBuilder constructor or append().
|
| Performance | LOW | CryptoUtil.java |
Prefer StringBuilder (non-synchronized) or StringBuffer (synchronized) over += for concatenating strings.
|
| Performance | LOW | CryptoUtil.java |
Prefer StringBuilder (non-synchronized) or StringBuffer (synchronized) over += for concatenating strings.
|
| Performance | LOW | InsecureLoginTask.java |
Avoid calling toString() on String objects; this is unnecessary.
|
| Performance | LOW | InsecureLoginTask.java |
Avoid calling toString() on String objects; this is unnecessary.
|
| Performance | LOW | Vote.java |
Avoid using redundant field initializer for 'average'.
|
| Performance | LOW | MissingFunctionACUsers.java |
Avoid instantiating new objects inside loops.
|
| Performance | LOW | MissingFunctionACUsers.java |
Avoid instantiating new objects inside loops.
|
| Performance | LOW | Users.java |
Avoid instantiating new objects inside loops.
|
| Performance | LOW | ResetLinkAssignmentForgotPassword.java |
String.indexOf(char) is faster than String.indexOf(String).
|
| Performance | LOW | SimpleMailAssignment.java |
String.indexOf(char) is faster than String.indexOf(String).
|
| Performance | LOW | SecurePasswordsAssignment.java |
StringBuffer constructor is initialized with size 16, but has at least 415 characters appended.
|
| Performance | LOW | SecurePasswordsAssignment.java |
StringBuffer (or StringBuilder).append is called 2 consecutive times with literals. Use a single append with a single combined String.
|
| Performance | LOW | SecurePasswordsAssignment.java |
StringBuffer (or StringBuilder).append is called consecutively without reusing the target variable.
|
| Performance | LOW | SecurePasswordsAssignment.java |
StringBuffer (or StringBuilder).append is called 2 consecutive times with literals. Use a single append with a single combined String.
|
| Performance | LOW | SecurePasswordsAssignment.java |
StringBuffer (or StringBuilder).append is called consecutively without reusing the target variable.
|
| Performance | LOW | SecurePasswordsAssignment.java |
StringBuffer (or StringBuilder).append is called 2 consecutive times with literals. Use a single append with a single combined String.
|
| Performance | LOW | SecurePasswordsAssignment.java |
StringBuffer (or StringBuilder).append is called consecutively without reusing the target variable.
|
| Performance | LOW | SecurePasswordsAssignment.java |
Avoid concatenating nonliterals in a StringBuffer/StringBuilder constructor or append().
|
| Performance | LOW | SecurePasswordsAssignment.java |
Avoid concatenating nonliterals in a StringBuffer/StringBuilder constructor or append().
|
| Performance | LOW | SecurePasswordsAssignment.java |
StringBuffer (or StringBuilder).append is called 2 consecutive times with literals. Use a single append with a single combined String.
|
| Performance | LOW | SecurePasswordsAssignment.java |
StringBuffer (or StringBuilder).append is called consecutively without reusing the target variable.
|
| Performance | LOW | SecurePasswordsAssignment.java |
Avoid concatenating nonliterals in a StringBuffer/StringBuilder constructor or append().
|
| Performance | LOW | SqlInjectionLesson4.java |
StringBuffer constructor is initialized with size 16, but has at least 39 characters appended.
|
| Performance | LOW | SqlInjectionLesson5.java |
StringBuffer constructor is initialized with size 16, but has at least 39 characters appended.
|
| Performance | LOW | SqlInjectionLesson5a.java |
StringBuffer constructor is initialized with size 16, but has at least 70 characters appended.
|
| Performance | LOW | SqlInjectionLesson8.java |
StringBuffer constructor is initialized with size 16, but has at least 78 characters appended.
|
| Performance | LOW | Servers.java |
Avoid instantiating new objects inside loops.
|
| Performance | LOW | SqlInjectionLesson10b.java |
Prefer StringBuilder (non-synchronized) or StringBuffer (synchronized) over += for concatenating strings.
|
| Performance | LOW | SqlInjectionLesson10b.java |
Avoid using redundant field initializer for 'contents'.
|
| Performance | LOW | SSRFTask1.java |
StringBuffer constructor is initialized with size 16, but has at least 62 characters appended.
|
| Performance | LOW | SSRFTask2.java |
StringBuffer constructor is initialized with size 16, but has at least 63 characters appended.
|
| Performance | LOW | MailAssignment.java |
String.indexOf(char) is faster than String.indexOf(String).
|
| Performance | LOW | FileServer.java |
Avoid instantiating new objects inside loops.
|
| Performance | LOW | Email.java |
String.indexOf(char) is faster than String.indexOf(String).
|
Thank you for supporting AppThreat