Designing Secure Software
A Guide for Developers
Book Contents
Foreword
Preface
Acknowledgments
Introduction
PART I: CONCEPTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1
Chapter1:Foundations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3
Chapter 2: Threats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23
Chapter 3: Mitigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43
Chapter 4: Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Chapter 5: Cryptography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
PARTII:DESIGN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Chapter 6: Secure Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95
Chapter 7: Security Design Reviews . . . . . . . . . . . . . . . . . . . . . . . . . . . . .109
PARTIII:IMPLEMENTATION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Chapter 8: Secure Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Chapter 9: Low-Level Coding Flaws . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Chapter 10: Untrusted Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Chapter 11: Web Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Chapter 12: Security Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Chapter 13: Secure Development Best Practices . . . . . . . . . . . . . . . . . . 221
Afterword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .233
Appendix A: Sample Design Document . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
AppendixB:Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .257
Appendix C: Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .269
Appendix D: Cheat Sheets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .275
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .281