In this series of liveProjects, you’ll repair serious security vulnerabilities uncovered in the Java backend of a server, servlet, and Java Server Pages (JSP). A security team has just finished a penetration test of your company’s web app, and you’ve been handed the list of everything that needs to be fixed—and fast. You’ll be given a complete sample application source code to work with. Each project in this series contains several vulnerabilities for you to tackle based on findings from the pentester’s results.
In this liveProject, you’ll write secure Java code for handling potentially untrusted data in web applications. You’ll build systems that can protect against data from web app forms; safely handle cookies, headers and redirects; and set up secure authentication mechanisms. Finally, you’ll manage your third-party libraries and identify potential vulnerabilities using Software Composition Analysis (SCA). Insecure third-party libraries can add vulnerabilities to your otherwise secure application and have been used in several recent real-world compromises.
In this liveProject, you’ll learn how to defend against attacks that could force a failure in your application or cause it to enter an unstable state. Unexpected behaviors and fail states can allow an attacker to steal information or provide information for a secondary attack. You’ll create catch statements and methods that can securely handle exceptions, design code that can maintain state on failure, and learn to avoid unstable system states altogether.
In this liveProject, you’ll fix bugs in your code that are vulnerable to injection attacks. Injection attacks are a serious risk to your application, allowing attackers to steal data, insert their own data, or make your system perform in unexpected ways. You’ll harden your app against the different types of injection attacks such as XML injection, serialized Java objects, JSON deserialization, Zipbomb attacks, and many more exciting attacks which require special defenses.
In this liveProject, you’ll tackle risks caused by unsafe input and output handling in your application. These bugs can make your application vulnerable to reflected and stored attacks such as Cross-Site Scripting (XSS). You’ll identify insecure code and develop fixes to securely handle inputs from untrusted sources, safely manage your encoded data, and avoid unsafe calculations with numeric data types. You will be provided with resource material to identify the problems and will replace the vulnerable Java with secure code to protect against attacks.