C/C++ Secure Coding Training Course
Developing secure C and C++ applications demands rigorous protection against malicious exploitation, memory corruption, and input validation bypasses. This program investigates vulnerability patterns such as buffer overflows, use-after-free errors, integer overflows, and type confusion. Participants will apply secure coding guidelines, static analysis tools, and defensive programming techniques to eliminate weaknesses, enforce input sanitization, and deliver hardened software resilient against cyberattacks.
This course is available as onsite live training in Vietnam or online live training.Course Outline
- C/C++ programming bugs
- Protection principles
- Input validation
- Improper error and exception handling
- Buffer overflow
- Stack overflow
- Heap overflow
- Protection against stack overflow
- Address Space Layout Randomization (ASLR)
- Secure coding sources
Requirements
Basics 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
Provisional Upcoming Courses (Require 5+ participants)
Related Courses
Advanced C++
35 HoursThis instructor-led live training in Vietnam (available online or onsite) is designed for developers who wish to utilize 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 prior experience with cryptographic building blocks like encryption and digital signatures. To ensure participants grasp the role and application of these cryptographic primitives, the course begins by establishing a solid foundation on the core requirements of secure communication: secure acknowledgment, integrity, confidentiality, remote identification, and anonymity. It also addresses common threats that compromise these requirements along with practical solutions.
As cryptography is central to network security, the course covers essential algorithms in symmetric cryptography, hashing, asymmetric cryptography, and key agreement. Rather than focusing on deep mathematical theory, these topics are explored from a developer's perspective, featuring typical use-case examples and practical considerations such as public key infrastructures (PKI). The course also introduces security protocols used in secure communication, with detailed discussions on widely adopted protocol families like IPsec and SSL/TLS.
Common cryptographic vulnerabilities are examined, focusing on specific algorithms and protocols. Topics include BEAST, CRIME, TIME, BREACH, FREAK, Logjam, Padding Oracle, Lucky Thirteen, POODLE, and similar threats, as well as RSA timing attacks. For each issue, practical implications and potential consequences are described without delving into complex mathematical details.
Finally, given that XML technology is fundamental for data exchange in networked applications, the course covers XML security aspects. This includes the use of XML in web services and SOAP messages, along with protective measures such as XML Signature and XML Encryption. It also addresses weaknesses in these protections and XML-specific vulnerabilities like XML injection, XML External Entity (XXE) attacks, XML bombs, and XPath injection.
Participants attending this course will
- Understand basic concepts of security, IT security, and secure coding
- Understand the requirements of secure communication
- Learn about network attacks and defenses at different OSI layers
- Have a practical understanding of cryptography
- Understand essential security protocols
- Understand some recent attacks against cryptosystems
- Get information about some recent related vulnerabilities
- Understand security concepts of Web services
- Get sources and further readings on secure coding practices
Audience
Developers, Professionals
Advanced Java Security
21 HoursEven seasoned Java developers often do not fully master the full spectrum of security services provided by Java, nor are they always aware of the diverse vulnerabilities that impact web applications built with Java.
In addition to introducing the security components of Standard Java Edition, this course addresses the security challenges associated with Java Enterprise Edition (JEE) and web services. The discussion begins with the foundational principles of cryptography and secure communication before diving into specific services. Through a series of exercises, participants explore both declarative and programmatic security techniques within JEE, as well as transport-layer and end-to-end security for web services. The practical application of these components is demonstrated through hands-on exercises, allowing participants to experiment with the relevant APIs and tools firsthand.
The course also examines and explains the most common and critical programming flaws in the Java language and platform, alongside web-related vulnerabilities. Beyond typical errors made by Java developers, the covered security vulnerabilities encompass both language-specific issues and problems arising from the runtime environment. All identified vulnerabilities and their corresponding attacks are illustrated through accessible exercises, followed by recommended coding guidelines and effective mitigation strategies.
Participants attending this course will
- Grasp the fundamental concepts of security, IT security, and secure coding.
- Learn about web vulnerabilities extending beyond the OWASP Top Ten and discover how to prevent them.
- Understand the security concepts underlying web services.
- Gain proficiency in utilizing various security features within the Java development environment.
- Develop a practical understanding of cryptography.
- Comprehend the security solutions offered by Java EE.
- Identify typical coding mistakes and learn how to avoid them.
- Receive updates on recent vulnerabilities within the Java framework.
- Acquire hands-on experience with security testing tools.
- Access resources and further reading materials on secure coding practices.
Audience
Developers
.NET, C# and ASP.NET Security Development
14 HoursToday, developers have access to various programming languages that compile code for the .NET and ASP.NET frameworks. While this environment offers robust tools for security development, it is essential for developers to master architecture-level and coding-level techniques to implement effective security measures, prevent vulnerabilities, and minimize their potential impact.
This course aims to equip developers with practical skills through extensive hands-on exercises. Participants will learn how to prevent untrusted code from executing privileged actions, safeguard resources using strong authentication and authorization mechanisms, manage remote procedure calls, handle sessions effectively, and explore alternative implementations for specific functionalities, among other critical topics.
The curriculum introduces various vulnerabilities by first examining common programming mistakes made when using .NET. The discussion on ASP.NET vulnerabilities also covers different environment settings and their implications. Furthermore, the course addresses ASP.NET-specific security challenges, including general web application security issues as well as specialized attacks such as ViewState manipulation and string termination attacks.
Participants attending this course will
- Grasp fundamental concepts of security, IT security, and secure coding practices
- Identify web vulnerabilities beyond the OWASP Top Ten and learn strategies to avoid them
- Utilize various security features available in the .NET development environment
- Acquire practical experience with security testing tools
- Recognize typical coding errors and understand how to prevent them
- Stay informed about recent vulnerabilities affecting .NET and ASP.NET
- Access resources and further reading materials on secure coding standards
Audience
Developers
Secure coding in PHP
21 HoursThis course equips PHP developers with the essential skills needed to make applications resilient against modern Internet-based attacks. Web vulnerabilities are explored through practical PHP examples that extend beyond the OWASP Top Ten, covering various injection attacks, script injections, weaknesses in session handling, insecure direct object references, file upload issues, and more. PHP-related vulnerabilities are categorized into standard vulnerability types, such as missing or improper input validation, incorrect error and exception handling, misuse of security features, and time- and state-related problems. For the latter category, we examine attacks including open_basedir circumvention, denial-of-service via magic floats, and hash table collision attacks. In each scenario, participants will learn key techniques and functions to mitigate these risks.
A significant emphasis is placed on client-side security, addressing issues related to JavaScript, Ajax, and HTML5. The course introduces various PHP extensions relevant to security, such as hash, mcrypt, and OpenSSL for cryptography, as well as Ctype, ext/filter, and HTML Purifier for input validation. Best practices for hardening the environment are discussed in the context of PHP configuration (php.ini), Apache server settings, and general server management. Additionally, participants will receive an overview of various security testing tools and techniques available to developers and testers, including security scanners, penetration testing methodologies, exploit kits, sniffers, proxy servers, fuzzing tools, and static source code analyzers.
The introduction of vulnerability concepts and configuration best practices is reinforced through hands-on exercises. These activities demonstrate the impact of successful attacks, illustrate how to implement mitigation strategies, and guide the use of various extensions and tools.
Participants completing this course will:
- Understand fundamental concepts of security, IT security, and secure coding.
- Gain insight into web vulnerabilities beyond the OWASP Top Ten and learn how to avoid them.
- Learn about client-side vulnerabilities and adopt secure coding practices.
- Develop a practical understanding of cryptography.
- Master the use of various PHP security features.
- Identify common coding mistakes and learn how to prevent them.
- Stay informed about recent vulnerabilities affecting PHP frameworks.
- Acquire practical experience using security testing tools.
- Access resources and further reading on secure coding practices.
Audience
Developers
Microsoft SDL Core
14 HoursThis comprehensive training on the core principles of Secure Development Lifecycle (SDL) offers an in-depth look at secure software design, development, and testing methodologies as defined by Microsoft. It begins with a Level 100 overview of the fundamental components of SDL, then progresses to specific design techniques aimed at identifying and rectifying vulnerabilities during the early stages of development.
Focusing on the development phase, the course surveys common security-related programming errors found in both managed and native code environments. For each vulnerability discussed, attack vectors are presented alongside corresponding mitigation strategies. Participants engage in hands-on exercises that simulate live hacking scenarios to reinforce these concepts. The curriculum also introduces various security testing methodologies and demonstrates the effectiveness of different testing tools. Through practical exercises using vulnerable code samples, participants gain a clear understanding of how these tools operate.
Participants attending this course will
Grasp the fundamental concepts of security, IT security, and secure coding practices
Become familiar with the essential stages of the Microsoft Secure Development Lifecycle (SDL)
Acquire skills in secure design and development practices
Learn about principles for secure implementation
Understand security testing methodologies
- Access resources and further reading materials on secure coding practices
Audience
Developers, Managers
C++ for Embedded Systems
21 HoursIs C++ suitable for embedded systems such as microcontrollers and real-time operating systems?
Should object-oriented programming be used in microcontrollers?
Is C++ too far removed from the hardware to be efficient?
This instructor-led, live training addresses these questions and demonstrates through discussion and practice how C++ can be used to develop embedded systems with code that is accurate, readable, and efficient. Participants put theory into practice through the creation of a sample embedded application in C++.
By the end of this training, participants will be able to:
- Understand the principles of object-oriented modeling, embedded software programming and real-time programming
- Produce code for embedded systems that is small, fast and safe
- Avoid code bloat from templates, exceptions, and other language features
- Understand the issues related to using C++ in safety-critical and real-time systems
- Debug a C++ program on a target device
Audience
- Developers
- Designers
Format of the course
- Part lecture, part discussion, exercises and heavy hands-on practice
C++ 11 Programming
14 HoursThis two-day course is designed for C++ programmers looking to apply the new C++11 standard in their professional work. It is especially beneficial for developers working on financial applications, covering all new features with coding examples that can be executed within the lab.
Accelerated C++ Programming with CUDA
8 HoursThis instructor-led, live training in Vietnam (online or onsite) is aimed at C++ developers who wish to use CUDA to accelerate applications, write high-performance GPU kernels, and leverage parallel algorithm libraries for scientific computing, data processing, and machine learning workloads.
DevOps Security: Creating a DevOps Security Strategy
7 HoursIn this instructor-led live course in Vietnam, participants will learn how to develop the appropriate security strategy to tackle DevOps security challenges.
EC-Council Certified DevSecOps Engineer (ECDE)
28 HoursThe EC-Council Certified DevSecOps Engineer (ECDE) program is a practical, hands-on course designed to empower professionals with the expertise needed to integrate security seamlessly across the entire DevOps lifecycle. This ensures that software development remains secure from the initial planning stages through to final deployment.
Delivered as an instructor-led live training session—available either online or on-site—this program targets intermediate-level software engineers and DevOps specialists who aim to embed robust security practices into their CI/CD pipelines, thereby guaranteeing the delivery of compliant and secure code.
Upon completion of this training, participants will gain the ability to:
- Comprehend the core principles and methodologies of DevSecOps.
- Secure all phases of the CI/CD pipeline using automated security tools.
- Apply secure coding standards and conduct vulnerability scanning effectively.
- Prepare confidently for the ECDE certification exam through practical labs and comprehensive reviews.
Course Format
- Engaging interactive lectures paired with group discussions.
- Practical, hands-on experience utilizing DevSecOps tools within simulated pipeline environments.
- Guided exercises specifically designed to reinforce secure development and deployment techniques.
Customization Options
- For tailored training programs adapted to your team’s specific workflows or toolchains, please reach out to us to arrange a customized schedule.
Using C++ in Embedded Systems - Applying C++11/C++14
21 HoursThis training aims to present C++ as the standard extension of C for object-oriented embedded system development. Because C++ encompasses C, this course provides a natural progression from C to C++, offering an inside look at how C++ is implemented. This understanding is particularly valuable when applying C++ in resource-constrained embedded environments. With the C++ standard undergoing significant updates with C++11 and the upcoming C++14, this course covers key subjects introduced by these revisions, such as high-performance memory management, concurrency in multicore systems, and bare-metal programming close to the hardware.
GOAL/BENEFITS
The primary objective of this class is to enable you to use C++ in a "correct" manner.
- Introduce C++ as an object-oriented alternative for embedded system development.
- Highlight the similarities and differences between C++ and C.
- Understand various memory management strategies, particularly the move semantics introduced in C++11.
- Examine the underlying implementation to see how different C++ paradigms translate into machine code.
- Utilize templates to create type-safe, high-level abstractions for bare-metal, hardware-close programming—including memory-mapped I/O and interrupts—with a focus on the variadic templates introduced in C++11.
- Present useful design patterns specifically applicable to embedded contexts.
- Include exercises to practice key concepts.
AUDIENCE/PARTICIPANTS
This training is designed for C++ programmers who wish to begin using C++ in an embedded system context.
PREVIOUS KNOWLEDGE
The course requires basic knowledge of C++ programming, corresponding to our "C++ – Level 1" and "C++ Level 2 – Introducing C++11" trainings.
PRACTICAL EXERCISES
During the training, you will practice the presented concepts through a series of exercises. We will use the open and free integrated development environment provided by Eclipse.
How to Write Secure Code
35 HoursThis course aims to achieve the following:
- Enable developers to master the techniques for writing secure code
- Assist software testers in verifying application security prior to deployment in the production environment
- Help software architects understand the risks associated with applications
- Support team leaders in establishing security baselines for their development teams
- Aid web administrators in configuring servers to prevent misconfigurations
Secure Developer Java (Inc OWASP)
21 HoursThis course explores secure coding concepts and principles for Java, utilizing the testing methodology of the Open Web Application Security Project (OWASP). The Open Web Application Security Project is a global community dedicated to developing freely available 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 for ASP.NET, leveraging the Open Web Application Security Project (OWASP) testing methodology. OWASP is an online community that provides freely available articles, methodologies, documentation, tools, and technologies focused on web application security.
Additionally, this course explores the security features of the .NET Framework and demonstrates how to secure web applications effectively.