Course Summary
Learn the principles of secure coding to develop secure software applications with this course. Explore common vulnerabilities and best practices to prevent them.Key Learning Points
- Understand common software vulnerabilities and how to prevent them
- Learn secure coding practices to minimize the risk of cyber attacks
- Develop a strong foundation in secure coding principles
Related Topics for further study
Learning Outcomes
- Develop secure software applications using secure coding principles
- Understand common software vulnerabilities and how to prevent them
- Implement best practices for minimizing the risk of cyber attacks
Prerequisites or good to have knowledge before taking this course
- Basic understanding of programming concepts
- Familiarity with at least one programming language
Course Difficulty Level
IntermediateCourse Format
- Online self-paced course
- Video lectures
- Quizzes and assignments
- Peer-reviewed assessments
Similar Courses
- Cybersecurity Fundamentals
- Introduction to Cyber Security
Related Education Paths
- Certified Secure Software Lifecycle Professional (CSSLP)
- Certified Information Systems Security Professional (CISSP)
- CompTIA Security+
Notable People in This Field
- Bruce Schneier
- Troy Hunt
- Mikko Hyppönen
Related Books
Description
This course introduces you to the principles of secure programming. It begins by discussing the philosophy and principles of secure programming, and then presenting robust programming and the relationship between it and secure programming. We'll go through a detailed example of writing robust code and we'll see many common programming problems and show their connection to writing robust, secure programs in general. We’ll examine eight design principles that govern secure coding and how to apply them to your own work. We’ll discuss how poor design choices drive implementation in coding. We’ll differentiate between informal, formal, and ad hoc coding methods. Throughout, methods for improving the security and robustness of your programs will be emphasized and you will have an opportunity to practice these concepts through various lab activities. A knowledge of the C programming language is helpful, but not required to participate in the lab exercises.
Outline
- Secure Programming Philosophy
- Course Introduction
- Module 1 Introduction
- The Philosophy of Secure Programming
- Defining Secure Programming
- Robust vs. Secure Programming
- Security Policies and Procedures
- Secure Programming General Philosophy
- Checking Design and Implementation
- Where to Look for Vulnerabilities
- Secure Programming Summary
- A Note From UC Davis
- Module 1 Practice Quiz
- Module 1 Quiz
- Secure Programming Design Principles
- Module 2 Introduction
- Secure Programming Design Principles Overview
- Principle of Least Privilege
- Fail-Safe Defaults
- Principle of Economy of Mechanism
- Principle of Complete Mediation
- Separation of Privilege Principle
- Principle of Open Design
- Principle of Least Common Mechanism
- Principle of Least Astonishment
- Secure Programming Design Principles Summary
- Complete Mediation - What Is Going On?
- Module 2 Practice Quiz
- Module 2 Quiz
- Robust Programming
- Module 3 Introduction
- Robust Programming Overview
- Robust Programming Basic Principles
- An Example Of Fragile Code
- Error Handling
- Cohesion, New Interfaces, and Token Generation
- Token Generation and Interpretation
- Creating and Deleting a Queue
- Adding and Removing Elements to a Queue
- Before You Begin This Module...
- Fragile Programs - What Is Going On?
- Module 3 Practice Quiz
- Module 3 Quiz
- Methods for Robustness
- Methods for Robustness Overview
- Methods Overview: Formal, Informal, and Ad Hoc Methods
- Overview of Formal Methods
- Login Program Example
- Incorporating Hierarchical Decomposition Methodology
- Login Program: Authenticating a User
- Login Program: Preconditions and Postconditions
- Course Summary
- Robust Programs - What Is Going On?
- Module 4 Practice Quiz
- Module 4 Quiz