We created this Green Belt path for developers coding in API. Each of our lessons are short and conclude with a brief ten question assessment. The learning module length is purposeful – they are perfect for filling gaps in a developer’s day while code is deploying.
Secure Development Core Lesson Modules
The need for secure coding, what are secure coding standards and how does a developer use them, and the potential dangers of Stack Overflow. Languages are complex. Secure coding is about creating code that is correct and secure.
Secure Coding Best Practices: Part 1
Explore the OWASP Proactive Controls, including Define Security Requirements, Leverage Security Frameworks and Libraries, Secure Database Access, Encode and Escape Data, and Validate All Inputs. OWASP Proactive Controls is security information written for developers, by developers.
Secure Coding Best Practices: Part 2
Explore the OWASP Proactive Controls, including Enforce Access Control, Protect Data Everywhere, Implement Security Logging and Monitoring, and Handle All Errors and Exceptions. OWASP Proactive Controls is security information written for developers, by developers.
In this module, we explain how a languages type system is categorized and what the main categories are. We discuss the difference between static and dynamic languages as well as weak and strongly typed languages.
Securing the Development Environment
The threats that your development environment faces, how to reduce development environment risk, and the ten tips to secure your development environment. Development environment threats are real and following simple tips to secure your development environment can significantly reduce your exposure.
Protecting your Code Repository
Why you need to protect your code repository, the security challenges in choosing a repository, the impact of not protecting access credentials and separating secrets in the source code. Your code is your product or application. If it is left unsecured, it could fall into the hands of a competitor.
Producing a Clean, Maintainable, & Secure Code Culture
The sources of complexity in software that led to security vulnerabilities and the twelve laws that act as the foundation for a clean, maintainable, and secure code culture. Developers must strive for secure code. Secure code is both clean and maintainable.
Potential security threats are impacting your release and deployment process and ways to improve the security of your release and deployment process. The release and deployment process is how our code gets delivered to our customers. The introduction of an unauthorized piece of code by an attacker could be devastating.
Designing a Secure App or Product
The four pillars of a secure application or product, secure application or product decisions, and the categories of the design of a secure application or product. A new application or product deserves a secure design. Security becomes a reality through careful design choices.
Thinking Like A Penetration Tester
The tools and methodologies to help a developer think like a penetration tester, how penetration testers use browsers and intercepting proxies, testing, fuzzing, and reverse engineering, and applying the knowledge of these topics to your world as a developer. Developers generally focus on the build; to better secure your applications, products, and systems, think like one who breaks.
Secure Design Principles in Action: Part 1
The economy of mechanism, secure the weakest link, establish trust boundaries, defense in-depth, don’t reinvent the wheel, usable security and default deny. Secure design principles require action to achieve “secure by design.”
Secure Design Principles in Action: Part 2
In this module, we explore secure design principles such as minimizing the attack surface, fail securely, least privileged, separation of duties, do not trust services/ infrastructure, and secure defaults. Employing a common understanding of secure design principles encourages secure design, and secure design equals fewer vulnerabilities.
In this module, we discuss tips to secure your C and C++ applications. These include things such as always initializing variables and never transferring ownership with raw pointers.
In this module, we discuss the difference in input validation within C++ and other languages. We discuss validating numbers and bounds checking and the famous Heartbleed Bug.
In this module, we discuss lambdas within the C++ language and the security issues that can arise with their use. We also discuss the changes that have made lambdas more secure and the guidelines to use them correctly.
In this module, we discuss the new additions to C++ in C++20 and how they may be used to secure your applications. These include things like safe integer comparisons, span, and ranges.
API Security Pathway
Green Belt Path
Learn the different types of attacks that impact APIs, including data breach, parameter tampering, identity, machine in the middle, functionality, and resource, compute farming, and DDoS. With each attack, pinpoint the consequences of a successful attack.
API: Security Top Ten, Part 1
Experience the first part of the OWASP API Top Ten to receive an introduction to this new top ten list, and to understand where API plays a role in modern applications. Key topics include: 1) how APIs expose object identifiers and the primary problem that exposure creates, 2) the correct implementation of API user authentication and the consequences that result, and 3) the causes and consequences of excessive data exposure.
API: Security Top Ten, Part 2
Experience the OWASP API Top Ten part two to explore critical topics: 1) how Denial of Service impacts APIs and appropriate mitigations, 2) API access control, identify authorization flaws, and implement robust security functionality, and 3) why filtering is critical to secure API use.
API: Security Top Ten, Part 3
Experience the OWASP API Top Ten part three to explore critical topics: 1) how insecure default configurations negatively impact APIs, 2) how APIs cause injection flaws, 3) the impact of exposing old, unpatched versions of APIs, and 4) how attackers steal data via API without developers or operations becoming aware.
API Security begins with a secure design. We highlight the impact security has on complex and simple systems and explore six API secure design principles with implementation guidance.
API: Authentication & Authorization
APIs need foundational security functionality, and it starts with authentication and authorization. Examine methods for determining the best authentication method and how to differentiate between and choose the best authorization solution for your API.
API: Security Best Practices, Part 1
API security best practices are a collection of knowledge based on securing real-world APIs. Learn how to approach input validation for API, recognize the value in using libraries, parsers, and logging for input, and understand the need for APIs that properly use HTTP return codes.
API: Security Best Practices, Part 2
API security best practices are a collection of knowledge based on securing real-world APIs. Learn how to implement error handling, audit logs, and identification of vulnerabilities for API. We discuss how to protect API security in transit using HTTPS, TLS, protection of sensitive information in requests, and security headers, and the need for a properly designed API that uses quotas, rate limiting, throttling, and filtering of requests.