You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: secure_software_development_fundamentals.md
+32-22Lines changed: 32 additions & 22 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1480,9 +1480,11 @@ At each remaining input from potentially untrusted users you need to validate th
1480
1480
1481
1481
#### Lab: Input Validation Basics Introduction
1482
1482
1483
-
🧪 Lab: This course includes some labs. Labs are optional, but you're *strongly* encouraged to try them! Please try lab [hello](https://best.openssf.org/labs/hello.html) to see how the labs work in this course.
1483
+
🧪 **Lab: This course includes some labs. Please try lab [hello](https://best.openssf.org/labs/hello.html) to see how the labs work in this course.**
1484
1484
1485
-
IF a section has a quiz and one or more labs, we'll present the
1485
+
*Labs are optional, but you're strongly encouraged to try them!*
1486
+
1487
+
If a section has a quiz and one or more labs, we'll present the
1486
1488
quiz first. This order is intentional.
1487
1489
Quizzes help make sure you can *recognize* a correct answer,
1488
1490
while labs help you *create* a correct answer. Recognizing a correct answer
@@ -1554,8 +1556,9 @@ Many programs need to validate text fields, but those fields’ rules are not de
1554
1556
1555
1557
#### Lab: Input Validation: A Few Simple Data Types
Labs are optional, but we encourage you to try them.
1559
+
🧪 **Lab: Please try lab [input1](https://best.openssf.org/labs/input1.html), which lets you practice validating input of a simple data type.**
1560
+
1561
+
*Labs are optional, but you're strongly encouraged to try them!*
1559
1562
1560
1563
### Sidequest: Text, Unicode, and Locales
1561
1564
@@ -1687,8 +1690,9 @@ There is far more to regexes. In fact, there is a whole book on just regular exp
1687
1690
1688
1691
#### Lab: Introduction to Regular Expressions
1689
1692
1690
-
🧪 Lab: Please try lab [regex0](https://best.openssf.org/labs/regex0.html), which lets you experiment with simple regex notation.
1691
-
Labs are optional, but we encourage you to try them.
1693
+
🧪 **Lab: Please try lab [regex0](https://best.openssf.org/labs/regex0.html), which lets you experiment with simple regex notation.**
1694
+
1695
+
*Labs are optional, but you're strongly encouraged to try them!*
1692
1696
1693
1697
### Using Regular Expressions for Text Input Validation
1694
1698
@@ -1768,11 +1772,11 @@ Remember, **^...$** are required to make this an allowlist (the text *must* matc
1768
1772
1769
1773
#### Lab: Using Regular Expressions for Text Input Validation
1770
1774
1771
-
🧪 Lab: Please try lab [regex1](https://best.openssf.org/labs/regex1.html), which lets you experiment using regex notation to validate strings.
1775
+
🧪 **Lab: Please try lab [regex1](https://best.openssf.org/labs/regex1.html), which lets you experiment using regex notation to validate strings.**
1772
1776
1773
-
🧪 Lab: Please try lab [input2](https://best.openssf.org/labs/input2.html), which lets you experiment in how to use a regex in a real program.
1777
+
🧪 **Lab: Please try lab [input2](https://best.openssf.org/labs/input2.html), which lets you experiment in how to use a regex in a real program.**
1774
1778
1775
-
Labs are optional, but we encourage you to try them.
1779
+
*Labs are optional, but you're strongly encouraged to try them!*
1776
1780
1777
1781
### Countering ReDoS Attacks on Regular Expressions
1778
1782
@@ -1831,8 +1835,9 @@ Note: ReDoS is often *not* a real vulnerability. Such regexes can *only* be a vu
1831
1835
1832
1836
#### Lab: Countering ReDoS Attacks on Regular Expressions
1833
1837
1834
-
🧪 Lab: Please try lab [ReDoS](https://best.openssf.org/labs/redos.html), which lets you experiment in how to counter redos attacks in a real program.
1835
-
Labs are optional, but we encourage you to try them.
1838
+
🧪 **Lab: Please try lab [ReDoS](https://best.openssf.org/labs/redos.html), which lets you experiment in how to counter redos attacks in a real program.**
1839
+
1840
+
*Labs are optional, but you're strongly encouraged to try them!*
1836
1841
1837
1842
## Input Validation: Beyond Numbers and Text
1838
1843
@@ -2214,8 +2219,9 @@ A cast changes a value’s type (that is what it is *for*), so by itself that is
2214
2219
2215
2220
#### Lab: Avoid Incorrect Conversion or Cast
2216
2221
2217
-
🧪 Lab: Please try lab [conversion](https://best.openssf.org/labs/conversion.html), which lets you experiment in how to counter improper conversion.
2218
-
Labs are optional, but we encourage you to try them.
2222
+
🧪 **Lab: Please try lab [conversion](https://best.openssf.org/labs/conversion.html), which lets you experiment in how to counter improper conversion.**
2223
+
2224
+
*Labs are optional, but you're strongly encouraged to try them!*
2219
2225
2220
2226
## Processing Data Securely: Undefined Behavior / Memory Safety
2221
2227
@@ -2333,8 +2339,9 @@ Correct. Of course, it is safer to not use memory-unsafe languages in the first
2333
2339
2334
2340
#### Lab: Countering Out-of-Bounds Reads and Writes (Buffer Overflow)
2335
2341
2336
-
🧪 Lab: Please try lab [oob1](https://best.openssf.org/labs/oob1.html), which lets you experiment in how to counter an out-of-bounds vulnerability.
2337
-
Labs are optional, but we encourage you to try them.
2342
+
🧪 **Lab: Please try lab [oob1](https://best.openssf.org/labs/oob1.html), which lets you experiment in how to counter an out-of-bounds vulnerability.**
2343
+
2344
+
*Labs are optional, but you're strongly encouraged to try them!*
2338
2345
2339
2346
### Double-free, Use-after-free, and Missing Release
2340
2347
@@ -2962,8 +2969,9 @@ This is true. Not only is it more efficient, but the operating system shell usua
2962
2969
2963
2970
#### Lab: OS Command (Shell) injection
2964
2971
2965
-
🧪 Lab: Please try lab [shell-injection](https://best.openssf.org/labs/shell-injection.html), which lets you experiment in how to counter an OS shell (injection) vulnerability.
2966
-
Labs are optional, but we encourage you to try them.
2972
+
🧪 **Lab: Please try lab [shell-injection](https://best.openssf.org/labs/shell-injection.html), which lets you experiment in how to counter an OS shell (injection) vulnerability.**
2973
+
2974
+
*Labs are optional, but you're strongly encouraged to try them!*
2967
2975
2968
2976
### Other Injection Attacks
2969
2977
@@ -3176,8 +3184,9 @@ Error-handling is a fact of life, but you need to make sure your error handling
3176
3184
3177
3185
#### Lab: Handling Errors
3178
3186
3179
-
🧪 Lab: Please try lab [handling-errors](https://best.openssf.org/labs/handling-errors.html), which lets you experiment in how to counter an OS shell (injection) vulnerability.
3180
-
Labs are optional, but we encourage you to try them.
3187
+
🧪 **Lab: Please try lab [handling-errors](https://best.openssf.org/labs/handling-errors.html), which lets you experiment with leveraging an error handling mechanism (specifically exception handling) and improve its robustness.**
3188
+
3189
+
*Labs are optional, but you're strongly encouraged to try them!*
3181
3190
3182
3191
### Logging
3183
3192
@@ -3511,9 +3520,10 @@ This is true. CSP does not eliminate all problems, but CSP does let you forbid i
0 commit comments