Skip to content

Commit 0b5834c

Browse files
Merge pull request ossf#124 from ossf/video_clips
First draft text of proposed video clips
2 parents 4316bb6 + 3250e3d commit 0b5834c

File tree

1 file changed

+14
-11
lines changed

1 file changed

+14
-11
lines changed

secure_software_development_fundamentals.md

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ 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.
179+
> 🎥 This chapter provides a high-level overview about security concepts, 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. It's hard to implement security and privacy if we don't know what they are, and we must have a basic idea of what the software needs to do before we can implement it. In addition, we should take reasonable steps to *manage* risks so that any risks taken are acceptable.
180180

181181
Learning Objectives:
182182

@@ -760,7 +760,8 @@ Identifying common kinds of vulnerabilities has another advantage, too: It will
760760

761761
# Design
762762

763-
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.
763+
764+
> 🎥 Non-trivial software needs to broken into smaller components that work together, and that breakdown is often called design or architectural design. 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.
764765

765766
Learning objectives:
766767

@@ -1104,7 +1105,9 @@ A good example of this is the Content Security Policy (CSP) supported by modern
11041105

11051106
# Reusing External Software
11061107

1107-
This chapter describes how to reuse software with security in mind, including selecting, downloading, installing, and updating such software.
1108+
<!-- Have CRob do this intro? -->
1109+
1110+
> 🎥 When developing software today we typically don't develop everything from scratch, we typically reuse a lot of existing software. In fact, on average, software products are mostly reused software. This chapter describes how to reuse software with security in mind, including selecting, downloading, installing, and updating such software. Reusing more secure software generally produces more secure results.
11081111

11091112
Learning objectives:
11101113

@@ -1338,7 +1341,7 @@ Practically all programs have to accept input. So we will begin examining how to
13381341

13391342
# Input Validation
13401343

1341-
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.
1344+
> 🎥 A key part of implementing secure software is to only accept 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. Limiting input won't counter every attack, but it will tend to make the software harder to attack.
13421345

13431346
Learning objectives:
13441347

@@ -1950,7 +1953,7 @@ Rate limiting is not a complete solution, but it is an easy and inexpensive appr
19501953

19511954
# Processing Data Securely
19521955

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.
1956+
> 🎥 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.
19541957

19551958
Learning objectives:
19561959

@@ -2306,7 +2309,7 @@ No. The range of possible values varies by language and types used, but attacker
23062309

23072310
# Calling Other Programs
23082311

2309-
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.
2312+
> 🎥 Real-world programs often call out to other programs. On a server-side application these programs might include the operating system or a database. On a client-side application this might include the supporting browser. This chapter describes how to call other programs securely. We'll discuss in particular on how to counter injection attacks, including SQL injection and OS command injection, as well as how to properly handle filenames and pathnames.
23102313

23112314
Learning objectives:
23122315

@@ -3085,7 +3088,7 @@ Make sure that you have backups of important datasets and a workable recovery pr
30853088

30863089
# Sending Output
30873090

3088-
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.
3091+
> 🎥 This chapter describes how to send output securely. This includes how to counter cross-site scripting (XSS) attacks, how to use HTTP hardening headers, and how to securely use formatting systems.
30893092

30903093
Learning objectives:
30913094

@@ -3694,7 +3697,7 @@ Thankfully, other than attacks on cryptographic systems, side-channel attacks ar
36943697

36953698
# Verification
36963699

3697-
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.
3700+
> 🎥 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 that can help improve security. These tool types include security code scanners aka static application security testing (SAST) tools, fuzzers, and web application scanners.
36983701

36993702
Learning objectives:
37003703

@@ -4107,7 +4110,7 @@ If you are using OSS, consider preferring OSS who have earned a badge. If you ar
41074110

41084111
# Threat Modeling
41094112

4110-
This chapter describes the basics of threat modeling along with a specific threat modeling approach called STRIDE.
4113+
> 🎥 This chapter describes the basics of threat modeling, along with a specific threat modeling approach called STRIDE. The point of threat modeling is to try to *think like an attacker* when considering your software, including looking for threats and proactively countering them.
41114114

41124115
Learning objectives:
41134116

@@ -4215,7 +4218,7 @@ Threat modeling may be overkill if you do not have significant security threats,
42154218

42164219
# Cryptography
42174220

4218-
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).
4221+
> 🎥 This chapter describes the basics of how to use cryptography to help develop secure software. Developing secure software involves a lot more than cryptography, but many secure systems depend vitally on cryptography, so to have secure systems we often need to know how to correctly use cryptography. We will cover 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).
42194222

42204223
Learning objectives:
42214224

@@ -4640,7 +4643,7 @@ Similarly, seek advice from experts, and weigh that advice carefully. Errors in
46404643

46414644
# Other Topics
46424645

4643-
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.
4646+
> 🎥 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.
46444647

46454648
Learning objectives:
46464649

0 commit comments

Comments
 (0)