"What makes this book so important is that it reflects the experiences of two of the industry's most experienced hands at getting real-world engineers to understand just what they're being asked for when they're asked to write secure code. The book
A poor overview of practical security problems. Unclear and garbled explanations of how to prevent problems, along with pages and pages of useless code that does not server to illustrate the problem or show how to defend against it. Verbose, formulaic and annoying. Look for another book if you want something on practical application security.
If you know almost nothing about software security, need a quick, broad introduction, and have this book laying around, it won't be a complete waste of your time. Otherwise I'm guessing you'll do better elsewhere.
My notes:
The Foreword states it is rare that software can kill people. I'm not sure how the authors could be unaware or dismiss how our society relies on ubiquitous computing systems to keep us safe. A quick reflection on the embedded code running numerous vehicles, medical devices, and industrial machinery shows the danger incorrectly implemented system pose.
There seems to be a bias for Microsoft technologies throughout.
Java is knocked for lacking an unsigned int primitive. In cases where this could matter isn't it a trade off between simpler code or a simpler language? Either way it is nice to know you can't mix signed and unsigned with Java avoiding a whole host of squirrely problems.
Shorter and simpler seem to be conflate, several examples and explanations express a preference for more cryptic code over easier to understand but longer code.
I found the Chroot Jail section confusing, granted my personal state diagram has many transitions to this node.
A non-proofreading read found several typos in a book focused on details.
A filename string length check example required 3 or more characters but no rationale.
MS IIS not following line termination standard is claimed to not be wrong where following standards is a fairly consistent message otherwise.
Permission control in Java not mentioned in relevant sections.
Redemption example code for protecting stored data did not follow safe use of strlen as described in an earlier chapter.
14 pages into weak passwords before salt is mentioned and no explanation is given though the rest of the book seems to assume a fairly innocent reader.
Was anyone still using Palm Pilots in 2010? It seems to make a poor example.
Lots of recommendations on what not to log but very little on what is useful to log. To be fair it isn't easy to strike a good balance between hiding internal state and structure from malevolent actors and providing useful information to developers.
I am not a software security expert and apologize for any misstatements. Feel free to correct me with my thanks.