C/C++ Secure Coding Training Course
Developing secure C and C++ applications demands a rigorous defense against malicious exploitation, memory corruption, and input validation bypasses. This course explores vulnerability patterns such as buffer overflows, use-after-free errors, integer overflows, and type confusion. Participants will apply secure coding guidelines, utilize static analysis tools, and implement defensive programming techniques to eliminate weaknesses, enforce input sanitization, and deliver hardened software that is resilient against cyberattacks.
This course is available as onsite live training in South Korea or online live training.Course Outline
- C/C++ programming vulnerabilities
- Core protection principles
- Input validation techniques
- Improper error and exception handling
- Buffer overflow
- Stack overflow
- Heap overflow
- Countermeasures against stack overflow
- Address Space Layout Randomization (ASLR)
- Resources for secure coding
Requirements
Fundamental knowledge of C/C++
Open Training Courses require 5+ participants.
C/C++ Secure Coding Training Course - Booking
C/C++ Secure Coding Training Course - Enquiry
Testimonials (6)
Experience sharing, it's teacher's know-how and valuable.
Carey Fan - Logitech
Course - C/C++ Secure Coding
the balance between lectures and practice, the rhythm, the trainer knowledge and pedagogic skill
Armando Pinto - EID
Course - C/C++ Secure Coding
The trainer provided up-to-date information and valuable references and tools.
Jose Vicente - EID
Course - C/C++ Secure Coding
to get a lot of good info about the course subject
Paulo Pereira - EID
Course - C/C++ Secure Coding
The coach solid knowledge and the experience, nice slides, good examples.
Celso Almeida - EID
Course - C/C++ Secure Coding
General course information
Paulo Gouveia - EID
Course - C/C++ Secure Coding
Upcoming Courses
Related Courses
Advanced C++
35 HoursThis instructor-led, live training in South Korea (online or onsite) is aimed at developers who wish to use advanced C++ programming techniques to develop complex, secure, and high-performance systems and applications.
By the end of this training, participants will be able to:
- Set up a development environment that includes all C++ libraries, packages and frameworks.
- Understand the features, components, and basic elements of C++.
- Create complex C++ applications using advanced programming techniques.
- Learn how to write readable, fast, and secure code in C++.
- Know the common security pitfalls in C++ language and how to mitigate them.
- Implement test strategies for code quality and security control.
- Use the diagnostics and debugging tools in C++ development.
Network Security and Secure Communication
21 HoursBuilding a secure networked application can be challenging, even for developers who have previously utilized various cryptographic components like encryption and digital signatures. To help participants grasp the role and application of these cryptographic primitives, the course first establishes a strong foundation on the core requirements of secure communication—including secure acknowledgment, integrity, confidentiality, remote authentication, and anonymity. It also outlines common threats that can compromise these requirements alongside real-world mitigation strategies.
Given that cryptography is a critical component of network security, the course examines essential cryptographic algorithms, including symmetric cryptography, hashing, asymmetric cryptography, and key agreement protocols. Rather than focusing on complex mathematical theories, the material is presented from a developer's perspective, featuring typical use-case examples and practical considerations such as public key infrastructure (PKI). Additionally, security protocols across various domains of secure communication are introduced, with a detailed examination of widely adopted protocol families like IPSEC and SSL/TLS.
The course addresses common cryptographic vulnerabilities associated with specific algorithms and protocols, such as BEAST, CRIME, TIME, BREACH, FREAK, Logjam, Padding oracle, Lucky Thirteen, POODLE, and RSA timing attacks. For each issue, practical implications and potential consequences are explained without delving into deep mathematical details.
Finally, since XML technology is central to data exchange in networked applications, the course covers XML security aspects. This includes the use of XML in web services and SOAP messages, protection mechanisms like XML Signature and XML Encryption, and potential weaknesses in these measures. XML-specific security issues such as XML injection, XML external entity (XXE) attacks, XML bombs, and XPath injection are also discussed.
Participants attending this course will
- Understand basic concepts of security, IT security, and secure coding
- Comprehend the requirements for secure communication
- Learn about network attacks and defenses across different OSI layers
- Gain practical knowledge of cryptography
- Understand essential security protocols
- Recognize recent attacks targeting cryptosystems
- Gain insights into recent related vulnerabilities
- Understand security concepts within web services
- Access resources and further reading materials on secure coding practices
Audience
Developers, Professionals
Advanced Java Security
21 HoursEven seasoned Java developers do not necessarily master every security service provided by Java, nor are they always fully aware of the various vulnerabilities pertinent to Java-based web applications.
In addition to introducing the security components of the Standard Java Edition, this course addresses security issues within Java Enterprise Edition (JEE) and web services. Before diving into specific services, the course covers the foundations of cryptography and secure communication. Through various exercises, participants will explore declarative and programmatic security techniques in JEE, as well as both transport-layer and end-to-end security for web services. Practical exercises allow participants to experiment with the discussed APIs and tools firsthand.
The course also examines and explains the most common and severe programming flaws and web-related vulnerabilities associated with the Java language and platform. Beyond typical bugs made by Java programmers, the security vulnerabilities covered include both language-specific issues and problems arising from the runtime environment. All vulnerabilities and corresponding attacks are demonstrated through accessible exercises, followed by recommended coding guidelines and mitigation strategies.
Participants attending this course will
- Understand the fundamental concepts of security, IT security, and secure coding
- Learn about web vulnerabilities beyond the OWASP Top Ten and how to avoid them
- Understand the security concepts of web services
- Learn to utilize various security features of the Java development environment
- Gain a practical understanding of cryptography
- Understand the security solutions of Java EE
- Learn about typical coding mistakes and how to avoid them
- Receive information on some recent vulnerabilities in the Java framework
- Acquire practical knowledge in using security testing tools
- Obtain resources and further readings on secure coding practices
Audience
Developers
.NET, C# and ASP.NET Security Development
14 HoursToday, a variety of programming languages can compile code for the .NET and ASP.NET frameworks. While this environment offers robust security development capabilities, developers must understand how to apply architectural and coding-level techniques to implement the desired security features, prevent vulnerabilities, and limit their potential exploitation.
This course aims to teach developers through extensive hands-on exercises how to prevent untrusted code from executing privileged actions, secure resources via strong authentication and authorization, facilitate remote procedure calls, manage sessions, and introduce various implementations for specific functionalities.
The introduction to various vulnerabilities begins by examining typical programming errors associated with .NET. The discussion on ASP.NET vulnerabilities also covers diverse environment settings and their impacts. Furthermore, the topic of ASP.NET-specific vulnerabilities addresses not only general web application security challenges but also specialized issues and attack methods, such as ViewState attacks and string termination attacks.
Participants attending this course will
- Understand the fundamental concepts of security, IT security, and secure coding
- Learn about web vulnerabilities beyond the OWASP Top Ten and how to avoid them
- Learn to utilize various security features within the .NET development environment
- Gain practical knowledge in using security testing tools
- Identify typical coding mistakes and learn how to avoid them
- Receive information on recent vulnerabilities in .NET and ASP.NET
- Access sources and further reading materials on secure coding practices
Audience
Developers
Secure coding in PHP
21 HoursThis course equips PHP developers with the essential skills required to fortify their applications against modern Internet-based threats. By using PHP-based examples that extend beyond the OWASP Top Ten, the curriculum covers a wide range of issues including various injection attacks, script injections, vulnerabilities in PHP session handling, insecure direct object references, file upload problems, and more. PHP-related vulnerabilities are categorized into standard types such as missing or improper input validation, incorrect error and exception handling, misuse of security features, and time- or state-related issues. Specific examples discussed include attacks like open_basedir circumvention, denial-of-service via magic floats, and hash table collision attacks. Participants will become familiar with the key techniques and functions needed to mitigate these risks.
Special emphasis is placed on client-side security, addressing issues related to JavaScript, Ajax, and HTML5. The course introduces several security-related PHP extensions, such as hash, mcrypt, and OpenSSL for cryptography, as well as Ctype, ext/filter, and HTML Purifier for input validation. Best practices for hardening are covered in the context of PHP configuration (php.ini), Apache settings, and server management in general. Additionally, the course provides an overview of various security testing tools and techniques available to developers and testers, including security scanners, penetration testing tools, exploit packs, sniffers, proxy servers, fuzzing tools, and static source code analyzers.
Both the introduction of vulnerabilities and configuration practices are reinforced with hands-on exercises. These exercises demonstrate the impact of successful attacks, show how to apply mitigation techniques, and introduce the use of various extensions and tools.
Participants attending this course will
- Understand the fundamental concepts of security, IT security, and secure coding
- Learn about web vulnerabilities beyond the OWASP Top Ten and how to prevent them
- Gain knowledge of client-side vulnerabilities and secure coding practices
- Develop a practical understanding of cryptography
- Learn how to utilize various security features of PHP
- Identify common coding mistakes and learn how to avoid them
- Stay informed about recent vulnerabilities in the PHP framework
- Acquire practical experience in using security testing tools
- Access resources and further reading on secure coding practices
Audience
Developers
Microsoft SDL Core
14 HoursThis comprehensive SDL core training provides an in-depth look at secure software design, development, and testing practices through the lens of the Microsoft Secure Development Lifecycle (SDL). The course offers a Level 100 overview of the fundamental building blocks of the SDL, followed by design techniques aimed at detecting and resolving flaws during the early stages of the development process.
Focusing on the development phase, the curriculum covers typical security-related programming bugs in both managed and native code. It presents attack vectors for the discussed vulnerabilities alongside corresponding mitigation techniques, all illustrated through hands-on exercises that offer participants engaging, practical hacking experiences. Following an introduction to various security testing methods, the course demonstrates the effectiveness of different testing tools. Participants will gain a deep understanding of how these tools operate by applying them to previously discussed vulnerable code through practical exercises.
Upon completion of this course, participants will:
Understand the core concepts of security, IT security, and secure coding
Gain familiarity with the essential steps of the Microsoft Secure Development Lifecycle
Acquire knowledge of secure design and development practices
Learn the principles of secure implementation
Understand security testing methodologies
- Access sources and further readings on secure coding practices
Target Audience
Developers, Managers
C++ for Embedded Systems
21 HoursIs C++ a viable choice for embedded systems, such as microcontrollers and real-time operating systems?
Should object-oriented programming be employed in microcontroller environments?
Is C++ sufficiently close to the hardware to ensure efficiency?
This instructor-led live training addresses these questions, demonstrating through discussion and hands-on practice how C++ can be utilized to develop embedded systems with code that is precise, readable, and efficient. Participants will apply theoretical knowledge by creating a sample embedded application using C++.
Upon completion of this training, participants will be able to:
- Grasp the principles of object-oriented modeling, embedded software programming, and real-time programming
- Generate code for embedded systems that is compact, fast, and secure
- Avoid code bloat caused by templates, exceptions, and other language features
- Comprehend the challenges associated with using C++ in safety-critical and real-time systems
- Debug a C++ program on a target device
Audience
- Developers
- Designers
Course Format
- A mix of lectures, discussions, exercises, and extensive hands-on practice
C++ 11 Programming
14 HoursThis two-day course is designed for C++ developers seeking to leverage the new C++11 standard in their professional work. It is especially beneficial for developers in the financial sector, covering all new features with practical coding examples that can be executed during lab sessions.
DevOps Security: Creating a DevOps Security Strategy
7 HoursIn this instructor-led, live course in South Korea, participants will learn how to formulate an effective security strategy to address the challenges of DevOps security.
EC-Council Certified DevSecOps Engineer (ECDE)
28 HoursThe EC-Council Certified DevSecOps Engineer (ECDE) program is a practical course tailored to empower professionals with the expertise required to embed security measures throughout the DevOps lifecycle, facilitating secure software development from the initial planning phases through to deployment.
This instructor-led, live training session, available both online and onsite, targets intermediate-level software engineers and DevOps specialists aiming to incorporate security protocols into their CI/CD pipelines, thereby ensuring the delivery of compliant and secure code.
Upon completion of this training, participants will be equipped to:
- Grasp the core principles and best practices of DevSecOps.
- Secure all stages of the CI/CD pipeline through the utilization of automated tools.
- Apply secure coding standards and execute vulnerability assessments.
- Effectively prepare for the ECDE certification via practical labs and comprehensive reviews.
Course Format
- Engaging lectures and interactive discussions.
- Practical application of DevSecOps tools within simulated pipeline environments.
- Supervised exercises centered on secure development and deployment methodologies.
Customization Options
- To arrange a customized training session aligned with your team’s specific workflows or toolchains, please reach out to us.
Using C++ in Embedded Systems - Applying C++11/C++14
21 HoursThis training introduces C++ as the logical evolution of C for object-oriented embedded system development. By demonstrating how C++ naturally extends C, the course provides an in-depth look at the underlying implementation of C++. This perspective is particularly valuable for understanding how to effectively apply C++ in resource-constrained embedded environments. With the recent major revisions to the C++ standard, known as C++11 and the upcoming C++14, this course focuses on features that are especially beneficial for embedded development, such as high-performance memory management, concurrency in multicore environments, and low-level, hardware-adjacent programming.
GOAL/BENEFITS
The primary objective of this class is to enable you to use C++ correctly and effectively.
- Present C++ as an object-oriented alternative within the context of embedded systems
- Highlight the similarities and differences between C and C++
- Understand various memory management strategies, with a focus on move semantics introduced in C++11
- Examine the underlying mechanics to see how different C++ paradigms translate into machine code
- Utilize templates to create type-safe, high-level abstractions for bare-metal, hardware-adjacent programming, including memory-mapped I/O and interrupts, particularly using the variadic templates introduced in C++11
- Introduce useful design patterns specifically applicable to embedded contexts
- Include practical exercises to reinforce key concepts
AUDIENCE/PARTICIPANTS
This training is designed for C++ programmers who wish to begin applying C++ in embedded system environments.
PREVIOUS KNOWLEDGE
The course assumes basic proficiency in C++ programming, equivalent to our "C++ – Level 1" and "C++ Level 2 – Introducing C++11" trainings.
PRACTICAL EXERCISES
Throughout the training, you will practice the presented concepts through a series of exercises. We will utilize the open and free integrated development environment provided by Eclipse.
Object Oriented Programming with C++
7 HoursThis instructor-led live training in South Korea (online or onsite) targets developers who wish to apply object-oriented programming techniques in C++ to enhance software design and architecture.
By the end of this training, participants will be able to: implement object-oriented concepts in C++, design modular applications, apply encapsulation and abstraction, and structure maintainable codebases.
How to Write Secure Code
35 HoursThis Course in South Korea aims to assist in the following:
- Help Developers master the techniques of writing Secure Code
- Help Software Testers assess application security before deployment to the production environment
- Help Software Architects understand the risks associated with applications
- Help Team Leaders establish security baselines for developers
- Help Web Masters configure Servers to prevent misconfigurations
Secure Developer Java (Inc OWASP)
21 HoursThis course explores secure coding principles and practices for Java, utilizing the testing methodology of the Open Web Application Security Project (OWASP). The OWASP community is an online hub dedicated to providing freely accessible articles, methodologies, documentation, tools, and technologies focused on web application security.
Secure Developer .NET (Inc OWASP)
21 HoursThis course delves into secure coding concepts and principles using ASP.NET, guided by the testing methodologies of the Open Web Application Security Project (OWASP). OWASP is an online community that provides freely available articles, methodologies, documentation, tools, and technologies dedicated to web application security.
The course examines the .NET Framework's security features and demonstrates how to secure web applications.