C/C++ Secure Coding Training Course
Developing secure C and C++ applications demands robust strategies to counteract malicious exploitation, memory corruption, and input validation bypasses. This program explores common vulnerability patterns such as buffer overflows, use-after-free errors, integer overflows, and type confusion. Participants will implement secure coding standards, utilize static analysis tools, and apply defensive programming techniques to remove weaknesses, enforce strict input sanitization, and produce hardened software capable of withstanding cyber threats.
This course is available as onsite live training in Serbia or online live training.Course Outline
- Common C/C++ programming errors
- Core protection principles
- Input validation techniques
- Improper error and exception handling
- Buffer overflow attacks
- Stack overflow vulnerabilities
- Heap overflow risks
- Strategies for stack overflow protection
- Address Space Layout Randomization (ASLR)
- Resources for secure coding
Requirements
Foundational 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 Serbia (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.
Advanced C++ : Practical workshop
21 HoursThis C++ course explores essential modern programming concepts, such as templates, move semantics, and first-class functions.
It places a strong emphasis on memory management through the use of smart pointers and adhering to secure coding standards.
Participants will gain insights into runtime errors, operator overloading, polymorphism, and STL containers combined with algorithms.
The course finishes by introducing effective testing strategies within the C++ ecosystem.
Network Security and Secure Communication
21 HoursBuilding secure networked applications can be challenging, even for developers who have previously worked with various cryptographic components (such as encryption and digital signatures). To help participants grasp the role and application of these cryptographic primitives, the course begins by establishing a strong foundation on the core requirements of secure communication: secure authentication, integrity, confidentiality, remote identity verification, and anonymity. It also addresses common threats that compromise these requirements and presents practical, real-world solutions.
As cryptography is a cornerstone of network security, the course examines essential algorithms in symmetric cryptography, hashing, asymmetric cryptography, and key agreement. Rather than focusing on complex mathematical theory, these topics are explored from a developer's perspective, highlighting typical use cases and practical considerations, such as public key infrastructures. The course also introduces security protocols across various domains of secure communication, with a detailed analysis of widely adopted protocol families like IPSEC and SSL/TLS.
Common cryptographic vulnerabilities are discussed, covering both 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 course outlines practical implications and potential consequences, again avoiding deep mathematical derivations.
Finally, given that XML technology is central to data exchange in networked applications, the course covers XML security. This includes the use of XML in web services and SOAP messages, alongside protection mechanisms like XML Signature and XML Encryption. It also addresses weaknesses in these protections and XML-specific security issues, such as XML injection, XML external entity (XXE) attacks, XML bombs, and XPath injection.
Participants attending this course will
- Understand fundamental concepts of security, IT security, and secure coding
- Understand the requirements of secure communication
- Learn about network attacks and defenses across different OSI layers
- Gain a practical understanding of cryptography
- Understand essential security protocols
- Understand recent attacks against cryptosystems
- Gain 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 do not necessarily master all the security services provided by Java, nor are they always aware of the various vulnerabilities relevant to web applications built with Java.
In addition to introducing the security components of the Standard Java Edition, this course addresses security issues within the Java Enterprise Edition (JEE) and web services. The discussion of specific services begins with the fundamentals of cryptography and secure communication. Various exercises cover declarative and programmatic security techniques in JEE, as well as both transport-layer and end-to-end security for web services. The use of all components is illustrated through several practical exercises, allowing participants to explore the discussed APIs and tools themselves.
The course also reviews and explains the most frequent and severe programming flaws of the Java language and platform, as well as web-related vulnerabilities. Beyond the 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 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 the security concepts of web services
- Learn to use 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
- Get information about some recent vulnerabilities in the Java framework
- Gain 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 into the .NET and ASP.NET frameworks. While this environment offers robust mechanisms for security development, it is essential for developers to master the architectural and coding-level techniques required to implement necessary security functions, prevent vulnerabilities, and mitigate their exploitation.
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 via strong authentication and authorization, manage remote procedure calls and sessions, and explore various functional implementations, among other critical topics.
The course introduces various vulnerabilities by first examining typical programming issues encountered when using .NET. It further discusses ASP.NET vulnerabilities, addressing how different environment settings and their impacts affect security. Additionally, the section on ASP.NET-specific vulnerabilities covers general web application security challenges as well as specialized issues and attack vectors, such as ViewState attacks and string termination exploits.
Participants attending this course will
- Gain a solid understanding of fundamental security concepts, IT security principles, and secure coding practices
- Identify web vulnerabilities beyond the OWASP Top Ten and learn effective strategies to avoid them
- Master the utilization of various security features within the .NET development environment
- Acquire practical expertise in using security testing tools
- Recognize common coding mistakes and understand how to prevent them
- Stay informed about recent vulnerabilities affecting .NET and ASP.NET
- Access valuable resources and further reading materials on secure coding practices
Audience
Software Developers
Secure coding in PHP
21 HoursThis course equips PHP developers with the essential skills needed to fortify applications against modern internet-based threats. The curriculum explores web vulnerabilities through PHP-centric examples that extend beyond the OWASP Top Ten, addressing various injection attacks, script injections, session handling flaws, insecure direct object references, file upload issues, and more. PHP-related vulnerabilities are categorized into standard types such as inadequate or missing input validation, incorrect error and exception handling, misuse of security features, and time- and state-related problems. For the latter, we examine attacks like open_basedir circumvention, denial-of-service via magic floats, and hash table collision attacks. In every scenario, participants will learn critical techniques and functions to mitigate these risks.
A significant emphasis is placed on client-side security, addressing issues related to JavaScript, Ajax, and HTML5. Several PHP security extensions are introduced, including hash, mcrypt, and OpenSSL for cryptography, as well as Ctype, ext/filter, and HTML Purifier for input validation. Comprehensive hardening practices are provided for PHP configuration (php.ini settings), Apache, and server infrastructure in general. Additionally, the course offers an overview of diverse security testing tools and techniques available to developers and testers, such as security scanners, penetration testing and exploit kits, sniffers, proxy servers, fuzzing tools, and static source code analyzers.
Both the exploration of vulnerabilities and configuration best practices are reinforced with hands-on exercises. These exercises demonstrate the impact of successful attacks, show how to implement mitigation strategies, and guide participants through the use of various extensions and tools.
Participants attending this course will
- Grasp fundamental concepts of security, IT security, and secure coding
- Explore web vulnerabilities beyond the OWASP Top Ten and learn how to prevent them
- Understand client-side vulnerabilities and secure coding practices
- Gain practical knowledge of cryptography
- Learn to utilize various PHP security features
- Identify common coding errors and learn how to avoid them
- Stay updated on recent vulnerabilities within the PHP framework
- Acquire practical experience using security testing tools
- Receive resources and further reading materials on secure coding practices
Audience
Developers
Microsoft SDL Core
14 HoursThe Combined SDL core training provides an in-depth look at secure software design, development, and testing via the Microsoft Secure Development Lifecycle (SDL). It offers a foundational overview of the essential SDL components, followed by design techniques aimed at identifying and rectifying flaws during the early stages of development.
Focusing on the development phase, the course reviews common security-related programming bugs in both managed and native code. The curriculum presents attack vectors for the discussed vulnerabilities alongside their corresponding mitigation strategies, all illustrated through hands-on exercises that offer participants practical, live hacking experience. Following the introduction to various security testing methods, the effectiveness of different testing tools is demonstrated. Participants gain a clear understanding of how these tools operate by applying them to previously discussed vulnerable code through numerous practical exercises.
Participants attending this course will
Grasp the 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 the principles of secure implementation.
Understand security testing methodology.
- Access resources and further readings on secure coding practices.
Audience
Developers, Managers
C++ for Embedded Systems
21 HoursIs C++ appropriate for embedded systems like microcontrollers and real-time operating systems?
Should object-oriented programming be applied in microcontroller development?
Is C++ too abstracted from the hardware to ensure efficiency?
This instructor-led live training addresses these questions and demonstrates through discussion and practice how C++ can be effectively used to develop embedded systems with code that is accurate, readable, and efficient. Participants will apply theory to practice by building a sample embedded application in C++.
By the end 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 safe.
- Avoid code bloat caused by templates, exceptions, and other language features.
- Understand the challenges associated with 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 extensive hands-on practice.
C++ 11 Programming
14 HoursThis two-day course is designed for C++ programmers who want to apply the new C++11 standard in their industry. It is particularly useful for financial applications developers covering all new features with coding examples to be executed within the lab
DevOps Security: Creating a DevOps Security Strategy
7 HoursIn this instructor-led, live course in Serbia, participants will learn how to formulate an effective security strategy to address the challenges posed by DevOps security.
EC-Council Certified DevSecOps Engineer (ECDE)
28 HoursThe EC-Council Certified DevSecOps Engineer (ECDE) is a practical course designed to provide professionals with the necessary skills to integrate security throughout the DevOps lifecycle, facilitating secure software development from the planning phase through to deployment.
This instructor-led, live training session (available online or on-site) targets intermediate-level software engineers and DevOps specialists looking to embed security practices into CI/CD pipelines, thereby ensuring the delivery of secure and compliant code.
Upon completion of this training, participants will be capable of:
- Comprehending the core principles and practices of DevSecOps.
- Securing all stages of the CI/CD pipeline using automated tools.
- Implementing secure coding standards and vulnerability scanning techniques.
- Preparing for the ECDE certification through practical labs and review sessions.
Course Format
- Interactive lectures and discussions.
- Hands-on experience with DevSecOps tools in simulated pipelines.
- Guided exercises centered on secure development and deployment.
Course Customization Options
- To arrange customized training tailored to your team’s specific workflows or toolchains, please contact us.
Using C++ in Embedded Systems - Applying C++11/C++14
21 HoursThis training introduces C++ as the natural extension of C for object-oriented embedded system development. Since C++ encompasses C, the course guides participants from C to C++ in an intuitive manner, while also exploring the underlying implementation mechanisms. This knowledge is particularly valuable for effectively applying C++ in resource-constrained embedded environments. With the C++ standard recently undergoing a major revision known as C++11, and a new version, C++14, on the horizon, this course covers key features introduced by these updates. These include high-performance memory management, concurrency utilizing multicore architectures, and low-level, near-hardware programming.
GOAL/BENEFITS
The primary objective of this course is to equip you with the ability to use C++ correctly.
- Introduce C++ as an object-oriented alternative to C in 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.
- Explore the inner workings to understand how different C++ paradigms translate into machine code.
- Utilize templates to create type-safe, high-level abstractions for near-hardware programming, such as memory-mapped I/O and interrupts, particularly leveraging variadic templates from C++11.
- Present useful design patterns especially relevant to embedded contexts.
- Include practical exercises to reinforce these concepts.
AUDIENCE/PARTICIPANTS
This training is designed for C++ programmers who wish to begin applying C++ in embedded system contexts.
PREVIOUS KNOWLEDGE
The course requires a foundational understanding of C++ programming, equivalent to our trainings titled 'C++ – Level 1' and 'C++ Level 2 – Introducing C++11'.
PRACTICAL EXERCISES
During 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.
How to Write Secure Code
35 HoursThis course aims to assist with the following:
- Enable developers to master the techniques of writing Secure Code
- Assist Software Testers in verifying application security before deployment to production environments
- Help Software Architects understand the risks surrounding applications
- Support Team Leaders in establishing security baselines for developers
- Guide Web Masters in configuring servers to avoid misconfigurations
Secure Developer Java (Inc OWASP)
21 HoursThis course explores secure coding principles and practices in Java, utilizing the testing methodology of the Open Web Application Security Project (OWASP). The Open Web Application Security Project is a global online community dedicated to creating freely accessible resources, including articles, methodologies, documentation, tools, and technologies, aimed at advancing web application security.
Secure Developer .NET (Inc OWASP)
21 HoursThis course examines secure coding concepts and principles for ASP.NET, applying the Open Web Application Security Project (OWASP) testing methodology. OWASP is a vibrant online community dedicated to providing freely accessible articles, methodologies, documentation, tools, and technologies in the realm of web application security.
The curriculum delves into the security features of the .NET Framework, demonstrating how to effectively secure web applications.