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 programme explores common vulnerability patterns such as buffer overflows, use-after-free errors, integer overflows, and type confusion. Participants will apply secure coding standards, leverage static analysis tools, and adopt 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 Malaysia or online live training.Course Outline
- C/C++ programming defects
- 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 resources
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 Malaysia (online or onsite) is designed for 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:
- Configure a development environment that incorporates all necessary C++ libraries, packages, and frameworks.
- Grasp the features, components, and fundamental elements of C++.
- Develop complex C++ applications using advanced programming techniques.
- Write clean, efficient, and secure C++ code.
- Identify common security pitfalls in C++ and learn how to mitigate them.
- Implement testing strategies to ensure code quality and security.
- Utilise diagnostics and debugging tools within 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 help participants grasp the role and usage of these cryptographic primitives, this course begins by establishing a solid foundation on the core requirements of secure communication: secure acknowledgement, integrity, confidentiality, remote identification, and anonymity. It also addresses common issues that may compromise these requirements, along with practical solutions used in real-world scenarios.
Since cryptography is critical to network security, the course covers essential cryptographic algorithms, including symmetric cryptography, hashing, asymmetric cryptography, and key agreement protocols. Rather than focusing on complex mathematical theories, these concepts are explained from a developer's perspective, highlighting typical use cases and practical considerations such as public key infrastructures (PKI). Additionally, security protocols across various domains of secure communication are introduced, with detailed discussions on widely-used protocol families like IPSEC and SSL/TLS.
The course also examines common cryptographic vulnerabilities associated with specific algorithms and protocols. Examples include BEAST, CRIME, TIME, BREACH, FREAK, Logjam, Padding oracle, Lucky Thirteen, POODLE, and RSA timing attacks. For each vulnerability, the practical implications and potential consequences are outlined, without delving into deep mathematical details.
Given that XML technology is central to data exchange in networked applications, the course explores the security aspects of XML. This includes using XML within web services and SOAP messages, alongside protection mechanisms like XML signature and XML encryption. It also covers vulnerabilities in these measures, as well as XML-specific security issues such as 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 experienced Java programmers do not necessarily master all the security services provided by Java, nor are they always aware of the different vulnerabilities relevant to web applications written in Java.
Besides introducing the security components of Standard Java Edition, this course addresses security issues concerning Java Enterprise Edition (JEE) and web services. The discussion of specific services is preceded by the foundations of cryptography and secure communication. Various exercises cover declarative and programmatic security techniques in JEE, while both transport-layer and end-to-end security of web services are discussed. The use of all components is presented through several practical exercises, allowing participants to try out the discussed APIs and tools themselves.
The course also covers and explains the most frequent and severe programming flaws of the Java language and platform, as well as web-related vulnerabilities. Besides the typical bugs committed by Java programmers, the introduced security vulnerabilities cover both language-specific issues and problems stemming from the runtime environment. All vulnerabilities and the relevant attacks are demonstrated through easy-to-understand exercises, followed by recommended coding guidelines and possible mitigation techniques.
Participants attending this course will
- Understand basic concepts of security, IT security, and secure coding
- Learn about web vulnerabilities beyond the OWASP Top Ten and know how to avoid them
- Understand security concepts of web services
- Learn to use various security features of the Java development environment
- Have a practical understanding of cryptography
- Understand security solutions of Java EE
- Learn about typical coding mistakes and how to avoid them
- Get information about some recent vulnerabilities in the Java framework
- Get practical knowledge in using security testing tools
- Get sources and further readings on secure coding practices
Audience
Developers
.NET, C# and ASP.NET Security Development
14 HoursToday, numerous programming languages can compile code for the .NET and ASP.NET frameworks. While this environment offers robust capabilities for security development, it is essential for developers to understand how to apply programming techniques at both the architecture and coding levels. This knowledge allows them to implement necessary security functions while avoiding vulnerabilities or minimizing their potential impact.
This course aims to equip developers with practical skills through extensive hands-on exercises. Participants will learn to prevent untrusted code from executing privileged actions, safeguard resources via strong authentication and authorization mechanisms, facilitate remote procedure calls, manage sessions effectively, and explore various implementations for specific functionalities.
The discussion on vulnerabilities begins by highlighting typical programming errors associated with .NET. The analysis of ASP.NET vulnerabilities further examines various environment settings and their implications. Additionally, the section on ASP.NET-specific vulnerabilities addresses general web application security challenges as well as unique issues and attack vectors, such as ViewState attacks and string termination exploits.
Participants attending this course will
- Grasp fundamental concepts of security, IT security, and secure coding practices
- Understand web vulnerabilities beyond the OWASP Top Ten and learn how to mitigate them
- Master the use of various security features within the .NET development environment
- Gain practical expertise in utilizing security testing tools
- Identify common coding mistakes and learn strategies to avoid them
- Stay informed about recent vulnerabilities affecting .NET and ASP.NET
- Access resources and recommended reading materials on secure coding practices
Audience
Developers
Secure coding in PHP
21 HoursThis course equips PHP developers with the essential skills required to harden applications against modern internet-based threats. It explores web vulnerabilities through practical PHP examples that extend beyond the OWASP Top Ten, addressing issues such as injection attacks, script injection, session handling weaknesses, insecure direct object references, file upload flaws, and more. The curriculum categorizes PHP-related vulnerabilities into standard types, including inadequate or missing input validation, improper error and exception handling, misused security features, and time- or state-related defects. Specific attack vectors discussed include open_basedir circumvention, denial-of-service attacks via magic floats, and hash table collision exploits. Participants will master the critical techniques and functions needed to mitigate these risks.
A significant emphasis is placed on client-side security, covering vulnerabilities in JavaScript, Ajax, and HTML5. The course introduces key PHP extensions for cryptography, such as hash, mcrypt, and OpenSSL, as well as those for input validation, including Ctype, ext/filter, and HTML Purifier. Best practices for hardening are provided regarding PHP configuration (php.ini), Apache server settings, and general server administration. Additionally, the course offers an overview of various security testing tools and techniques available to developers and testers, including security scanners, penetration testing utilities, exploit kits, sniffers, proxy servers, fuzzing tools, and static source code analyzers.
Both the vulnerability concepts and configuration guidelines are reinforced through hands-on exercises. These practical sessions demonstrate the impact of successful attacks, illustrate how to implement mitigation strategies, and guide the use of various extensions and tools.
Participants attending this course will
- Grasp the fundamental concepts of security, IT security, and secure coding
- Understand web vulnerabilities beyond the OWASP Top Ten and learn how to prevent them
- Gain insight into client-side vulnerabilities and secure coding methodologies
- Develop a practical understanding of cryptography
- Learn to effectively utilise various PHP security features
- Identify common coding mistakes and discover how to avoid them
- Stay informed about recent vulnerabilities within the PHP framework
- Acquire hands-on experience with security testing tools
- Access resources and further reading materials on secure coding practices
Audience
Developers
Microsoft SDL Core
14 HoursThe Combined SDL core training offers an in-depth look at secure software design, development, and testing through the Microsoft Secure Development Lifecycle (SDL). It provides a foundational overview (Level 100) of the core components of SDL, followed by design strategies aimed at detecting and remedying flaws early in the development cycle.
Addressing the development phase, the course surveys common security-related programming vulnerabilities in both managed and native code. It presents attack vectors for these vulnerabilities alongside corresponding mitigation techniques, illustrated through numerous hands-on exercises that offer participants engaging, practical hacking experiences. The introduction to various security testing methods is complemented by demonstrations of the effectiveness of different testing tools. Participants will gain a clear understanding of how these tools operate through practical exercises, applying them to the vulnerable code scenarios discussed throughout the course.
Participants attending this course will
Grasp fundamental concepts of security, IT security, and secure coding
Become familiar with the essential steps of the Microsoft Secure Development Lifecycle
Acquire knowledge of secure design and development practices
Learn about secure implementation principles
Understand security testing methodology
- Access sources and further readings 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 modelling, 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 keen on leveraging the C++11 standard in their professional work. It is especially valuable for developers working on financial applications, covering all new features with coding examples for hands-on lab execution.
Accelerated C++ Programming with CUDA
8 HoursThis instructor-led live training in Malaysia (online or onsite) targets C++ developers who wish to use CUDA to accelerate applications, develop high-performance GPU kernels, and harness 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 Malaysia, 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) is a practical course designed to equip professionals with the skills to embed security throughout the DevOps lifecycle, facilitating secure software development from initial planning through to deployment.
This instructor-led, live training (available online or onsite) targets intermediate-level software and DevOps professionals who aim to integrate security practices into CI/CD pipelines, ensuring the delivery of secure and compliant code.
Upon completion of this training, participants will be able to:
- Grasp the core principles and practices of DevSecOps.
- Secure every stage of the CI/CD pipeline using automated tools.
- Implement secure coding practices and conduct vulnerability scanning.
- Prepare for the ECDE certification through practical labs and review sessions.
Course Format
- Interactive lectures and discussions.
- Hands-on application of DevSecOps tools within simulated pipelines.
- Guided exercises focused on secure development and deployment processes.
Course Customization Options
- To arrange customized training tailored to your team’s specific workflows or toolchain, please contact us.
Using C++ in Embedded Systems - Applying C++11/C++14
21 HoursThis training programme aims to introduce C++ as the standard extension for implementing object-oriented development in embedded systems. Because C++ encompasses C, this course facilitates a smooth transition from C to C++, while also exploring the underlying implementation mechanisms of C++. This understanding is particularly crucial when deploying C++ within the resource-constrained environments typical of embedded systems. The C++ standard has recently undergone a significant update, known as C++11, with C++14 following closely. This course covers key features introduced by these revisions that are highly beneficial, such as high-performance memory management, concurrency in multicore environments, and bare-metal programming that interacts closely with the hardware.
GOALS AND BENEFITS
The primary objective of this course is to equip you with the skills to use C++ in a 'correct' and effective manner.
- Position C++ as an object-oriented language alternative within the context of embedded systems
- Highlight the similarities and differences between C and C++
- Understand various memory management strategies, with a specific focus on move semantics introduced in C++11
- Examine the underlying mechanics to understand how different C++ paradigms translate into machine code
- Leverage templates to create type-safe, high-level abstractions for bare-metal, hardware-proximate programming (such as memory-mapped I/O and interrupts), including the use of variadic templates introduced in C++11
- Explore useful design patterns, particularly those applicable to embedded contexts
- Engage in practical exercises to reinforce conceptual understanding
AUDIENCE AND PARTICIPANTS
This training is designed for C++ programmers who wish to begin applying C++ in an embedded systems context.
PREVIOUS KNOWLEDGE
Participants are expected to have a foundational understanding of C++ programming, equivalent to our trainings 'C++ – Level 1' and 'C++ Level 2 – Introducing C++11'.
PRACTICAL EXERCISES
Throughout the training, you will practice the concepts presented through a series of exercises. We will utilise the open-source and free integrated development environment provided by Eclipse.
How to Write Secure Code
35 HoursThis course aims to achieve the following:
- Assist developers in mastering the techniques of writing secure code.
- Enable software testers to assess application security before deployment to the production environment.
- Help software architects understand the risks surrounding applications.
- Assist team leaders in establishing security baselines for developers.
- Support webmasters in configuring servers to avoid misconfigurations.
Secure Developer Java (Inc OWASP)
21 HoursThis course explores the fundamental concepts and principles of secure coding in 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 producing 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 for 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 focused on web application security.
The course examines the security features of the .NET Framework and demonstrates techniques for securing web applications.