Skip to content

Commit 909445d

Browse files
First draft text of proposed video clips
This creates simple text to introduce major sections with short video clips. I intend for one to be done by CRob. One feedback item we got was that many people wanted a little more media (video) to break the monotony. The problem is that creating videos takes a lot of time, and more importantly, makes editing the material hard. We might be able to resolve that with AI, but that's a separate discussion. The proposed solution is to have short video clips that introduce chapters - they are unlikely to need updating, yet they'll help break up the material. Signed-off-by: David A. Wheeler <[email protected]>
1 parent f8e222c commit 909445d

File tree

1 file changed

+23
-1
lines changed

1 file changed

+23
-1
lines changed

secure_software_development_fundamentals.md

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,8 @@ With that, let’s begin.
176176

177177
# Security Basics
178178

179+
> 🎥 This chapter provides a high-level overview about security, including definitions of security and privacy, requirements, and risk management. We need to know these security basics so we can understand how to develop software that supports these basics.
180+
179181
This chapter provides a high-level overview about security, including definitions of security and privacy, requirements, and risk management.
180182

181183
Learning Objectives:
@@ -760,6 +762,8 @@ Identifying common kinds of vulnerabilities has another advantage, too: It will
760762

761763
# Design
762764

765+
> 🎥 This chapter describes how to design software to be secure, focusing on key secure design principles such as least privilege, complete mediation, and input validation. These principles will help you avoid common problems and make your software harder to attack.
766+
763767
This chapter describes how to design software to be secure, focusing on key secure design principles such as least privilege, complete mediation, and input validation.
764768

765769
Learning objectives:
@@ -1104,6 +1108,8 @@ A good example of this is the Content Security Policy (CSP) supported by modern
11041108

11051109
# Reusing External Software
11061110

1111+
> 🎥 Hi, I'm CRob. I work at Intel corporation and lead the Open Source Security Foundation Best Practices Working Group. When developing software today we typically don't develop everything from scratch, but instead we typically reuse a lot of existing software. This chapter describes how to reuse software with security in mind, including selecting, downloading, installing, and updating such software.
1112+
11071113
This chapter describes how to reuse software with security in mind, including selecting, downloading, installing, and updating such software.
11081114

11091115
Learning objectives:
@@ -1338,6 +1344,8 @@ Practically all programs have to accept input. So we will begin examining how to
13381344

13391345
# Input Validation
13401346

1347+
> 🎥 The first step in developing secure software is to only input that should be accepted. This chapter describes how to validate input, including how to validate numbers and text, the importance of minimizing attack surfaces, and how to improve availability by considering the inputs.
1348+
13411349
This chapter describes how to validate input, including how to validate numbers and text, the importance of minimizing attack surfaces, and how to improve availability by considering the inputs.
13421350

13431351
Learning objectives:
@@ -1950,7 +1958,9 @@ Rate limiting is not a complete solution, but it is an easy and inexpensive appr
19501958

19511959
# Processing Data Securely
19521960

1953-
This chapter describes how to process data within software with security in mind, including treating untrusted data as dangerous, avoiding default and hardcoded credentials, avoiding memory safety issues (such as buffer overflows), and avoiding undefined behavior.
1961+
> 🎥 This chapter describes how to process data with security in mind, including treating untrusted data as dangerous, avoiding default and hardcoded credentials, avoiding memory safety issues (such as buffer overflows), and avoiding undefined behavior.
1962+
1963+
This chapter describes how to process data with security in mind, including treating untrusted data as dangerous, avoiding default and hardcoded credentials, avoiding memory safety issues (such as buffer overflows), and avoiding undefined behavior.
19541964

19551965
Learning objectives:
19561966

@@ -2306,6 +2316,8 @@ No. The range of possible values varies by language and types used, but attacker
23062316

23072317
# Calling Other Programs
23082318

2319+
> 🎥 Real-world programs often call out to other programs, such as the operating system, database, and supporting browser. This chapter describes how to call other programs securely, including how to counter injection attacks (including SQL injection and OS command injection) and how to properly handle filenames/pathnames.
2320+
23092321
This chapter describes how to call other programs securely, including how to counter injection attacks (including SQL injection and OS command injection) and how to properly handle filenames/pathnames.
23102322

23112323
Learning objectives:
@@ -3085,6 +3097,8 @@ Make sure that you have backups of important datasets and a workable recovery pr
30853097

30863098
# Sending Output
30873099

3100+
> 🎥 This chapter describes how to send output securely, including how to counter cross-site scripting (XSS) attacks, using HTTP hardening headers, and securely using formatting systems.
3101+
30883102
This chapter describes how to send output securely, including how to counter cross-site scripting (XSS) attacks, using HTTP hardening headers, and securely using formatting systems.
30893103

30903104
Learning objectives:
@@ -3686,6 +3700,8 @@ Thankfully, other than attacks on cryptographic systems, side-channel attacks ar
36863700

36873701
# Verification
36883702

3703+
> 🎥 This chapter describes how to verify for security, including the limitations of tools, the meaning of *static analysis* and *dynamic analysis*, and common types of tools such as security code scanners/static application security testing (SAST) tools, fuzzers, and web application scanners.
3704+
36893705
This chapter describes how to verify for security, including the limitations of tools, the meaning of *static analysis* and *dynamic analysis*, and common types of tools such as security code scanners/static application security testing (SAST) tools, fuzzers, and web application scanners.
36903706

36913707
Learning objectives:
@@ -4099,6 +4115,8 @@ If you are using OSS, consider preferring OSS who have earned a badge. If you ar
40994115

41004116
# Threat Modeling
41014117

4118+
> 🎥 This chapter describes the basics of threat modeling along with a specific threat modeling approach called STRIDE.
4119+
41024120
This chapter describes the basics of threat modeling along with a specific threat modeling approach called STRIDE.
41034121

41044122
Learning objectives:
@@ -4207,6 +4225,8 @@ Threat modeling may be overkill if you do not have significant security threats,
42074225

42084226
# Cryptography
42094227

4228+
> 🎥 This chapter describes the basics of how to use cryptography to help develop secure software, including the basics of symmetric/shared key encryption algorithms, cryptographic hashes, public-key (asymmetric) encryption, how to securely store passwords, cryptographically secure pseudo-random number generators (CSPRNG), and Transport Layer Security (TLS).
4229+
42104230
This chapter describes the basics of how to use cryptography to help develop secure software, including the basics of symmetric/shared key encryption algorithms, cryptographic hashes, public-key (asymmetric) encryption, how to securely store passwords, cryptographically secure pseudo-random number generators (CSPRNG), and Transport Layer Security (TLS).
42114231

42124232
Learning objectives:
@@ -4630,6 +4650,8 @@ Similarly, seek advice from experts, and weigh that advice carefully. Errors in
46304650

46314651
# Other Topics
46324652

4653+
> 🎥 This chapter describes topics on the fundamentals of developing secure software that have not been covered elsewhere, including handling vulnerability disclosures, assurance cases, the basics after development, formal methods, and top vulnerability lists.
4654+
46334655
This chapter describes topics on the fundamentals of developing secure software that have not been covered elsewhere, including handling vulnerability disclosures, assurance cases, the basics after development, formal methods, and top vulnerability lists.
46344656

46354657
Learning objectives:

0 commit comments

Comments
 (0)