What Every Programmer Needs to Know
Neil Daswani, Christoph Kern, Anita Kesavan

#Programmer
#Security
#Cryptography
#MACs
Foundations of Security: What Every Programmer Needs to Know teaches new and current software professionals state-of-the-art software security design principles, methodology, and concrete programming techniques they need to build secure software systems. Once you're enabled with the techniques covered in this book, you can start to alleviate some of the inherent vulnerabilities that make today's software so susceptible to attack. The book uses web servers and web applications as running examples throughout the book.
For the past few years, the Internet has had a "wild, wild west" flavor to it. Credit card numbers are stolen in massive numbers. Commercial web sites have been shut down by Internet worms. Poor privacy practices come to light and cause great embarrassment to the corporations behind them. All these security-related issues contribute at least to a lack of trust and loss of goodwill. Often there is a monetary cost as well, as companies scramble to clean up the mess when they get spotlighted by poor security practices.
It takes time to build trust with users, and trust is hard to win back. Security vulnerabilities get in the way of that trust. Foundations of Security: What Every Programmer Needs To Know helps you manage risk due to insecure code and build trust with users by showing how to write code to prevent, detect, and contain attacks.
Table of Contents
PART 1 Security Design Principles
CHAPTER 1 Security Goals
CHAPTER 2 Secure Systems Design
CHAPTER 3 Secure Design Principles
CHAPTER 4 Exercises for Part 1
PART 2 Secure Programming Techniques
CHAPTER 5 Worms and Other Malware
CHAPTER 6 Buffer Overflows
CHAPTER 7 Client-State Manipulation
CHAPTER 8 SQL Injection
CHAPTER 9 Password Security
CHAPTER 10 Cross-Domain Security in Web Applications
CHAPTER 11 Exercises for Part 2
PART 3 Introduction to Cryptography
CHAPTER 12 Symmetric Key Cryptography
CHAPTER 13 Asymmetric Key Cryptography
CHAPTER 14 Key Management and Exchange
CHAPTER 15 MACs and Signatures
CHAPTER 16 Exercises for Part 3
PART Appendixes
APPENDIX A Defense-in-Depth: The FLI Model
APPENDIX B Source Code Listings
From the reviews:
"It is written based on a course for beginning programmers. … The book has three main parts: security design principles, secure programming techniques, and an introduction to cryptography. … Exercises are included at the end of each part in order to provide suggestions for getting hands-on experience." (A. Mariën, ACM Computing Reviews, Vol. 49 (5), May, 2008)









