Most Helpful Customer Reviews
16 of 16 people found the following review helpful:
4.0 out of 5 stars
A fast read that addresses serious problems in a decent manner, November 1, 2006
This review is from: 19 Deadly Sins of Software Security: Programming Flaws and How to Fix Them (Security One-off) (Paperback)
I read six books on software security recently, namely "Writing Secure Code, 2nd Ed" by Michael Howard and David LeBlanc; "19 Deadly Sins of Software Security" by Michael Howard, David LeBlanc, and John Viega; "Software Security" by Gary McGraw; "The Security Development Lifecycle" by Michael Howard and Steve Lipner; "High-Assurance Design" by Cliff Berg; and "Security Patterns" by Markus Schumacher, et al. Each book takes a different approach to the software security problem, although the first two focus on coding bugs and flaws; the second two examine development processes; and the last two discuss practices or patterns for improved design and implementation. My favorite of the six is Gary McGraw's, thanks to his clear thinking and logical analysis. The other five are still noteworthy books. All six will contribute to the production of more security software. The main reason to read 19DS is to quickly become acquainted with various security problems facing software developers. At less than 300 pages, it's not a thick tome like WSC2E. 19DS also is not afraid to mix bugs (coding errors, like buffer overflow conditions) with flaws (design problems, like "failing to protect network traffic.") This sort of lax categorization bothers me (and Gary McGraw, as noted in his book "Software Security"), but it shouldn't interfere with the quality content of 19DS. Probably the most interesting aspect (to me) of 19DS was sin 10, which discussed problems with Secure Sockets Layer (SSL). The chapter didn't describe algorithmic or protocol problems. Instead, it explained how programmers make poor assumptions about the features provided by their language of choice with respect to SSL. For example, many SSL libraries do not properly validate certificates. Without this functionality, the authors argue that SSL is almost worthless. While I don't necessarily agree with this statement, I really like reading this sort of criticism. I'd like to note that p 134 berates Python's ssl() but ignores pyOpenSSL, which probably provides the features the authors would want. Other "sins" take slightly different looks at security issues. Sin 17, for example, explains the importance of key exchange AND authentication. These are the sorts of problems I imagine are only discovered by examining multiple real-world implementations, and I value the authors sharing their experiences. I subtracted one star because the quality of the "sins" isn't even. Some don't adequately explain the problem at hand (e.g., integer overflows). If the authors assume the reader knows the problem well enough to not introduce it properly, then why discuss it at all? Overall, however, 19DS is a great book to get to your developers. It's short enough that they might actually read it, and the content is presented in a convincing enough manner to perhaps influence their coding choices.
Help other customers find the most helpful reviews
Was this review helpful to you? Yes
No
10 of 11 people found the following review helpful:
5.0 out of 5 stars
Another one of those "required" books to own and read..., September 3, 2005
This review is from: 19 Deadly Sins of Software Security: Programming Flaws and How to Fix Them (Security One-off) (Paperback)
With the continual alerts and patches for software vulnerabilities, it may appear that there is no way to write secure software. While I agree there are no "absolutes" when it comes to secure software, there are ways to greatly reduce your potential of writing software that can be exploited. 19 Deadly Sins Of Software Security - Programming Flaws and How To Fix Them by Michael Howard, David LeBlanc, and John Viega does an excellent job in helping you focus in on this subject... Content: Buffer Overruns; Format String Problems; Integer Overflows; SQL Injection; Command Injection; Failing To Handle Errors; Cross-Site Scripting; Failing To Protect Network Traffic; Use Of Magic URLs And Hidden Form Fields; Improper Use Of SSL And TLS; Use Of Weak Password-Based Systems; Failing To Store And Protect Data Security; Information Leakage; Improper File Access; Trusting Network Name Resolution; Race Conditions; Unauthenticated Key Exchange; Cryptographically Strong Random Numbers; Poor Usability; Mapping The 19 Deadly Sins To The OWASP "Top Ten"; Summary Of Do's And Don'ts; Index This book came out of a list developed by Homeland Security that declared that 95% of security issues in software came from 19 programming mistakes. What you read in these pages go into more detail about each of those issues, but in a very concise, practical, no-nonsense fashion. This is the type of information you'll need as a professional who needs to get a job done without wasting time on fluff and verbose writing. Each chapter covers one of the sins, and follows a standard format for the information. The subsections in each chapter are: Overview of the Sin; Affected Languages; The Sin Explained; Related Sins; Spotting the Sin Pattern; Spotting the Sin During Code Review; Testing Techniques to Find the Sin; Example Sins; Redemption Steps; Extra Defensive Measures; Other Resources; Summary. Since each chapter stands on its own, you can use this as a reference tool if you're having a particular issue to resolve, or you can read it cover to cover to get a good understanding of the security concerns you need to face when programming. Just about every significant programming platform and language is covered somewhere in here (Windows, Unix, Linux, C, C++, C#, Java, PHP, Perl, etc.), so there's no real reason why nearly every developer won't take *something* away from their reading. And if you're writing software that will be exposed to usage outside your company, there is *no* reason to not have this book on your shelf. You'll get the core of what you should do very quickly, and you'll end up writing more secure software up front instead of issuing patch after patch after patch...
Help other customers find the most helpful reviews
Was this review helpful to you? Yes
No
11 of 13 people found the following review helpful:
4.0 out of 5 stars
Great book for experienced developers, good one for newbies, August 30, 2005
This review is from: 19 Deadly Sins of Software Security: Programming Flaws and How to Fix Them (Security One-off) (Paperback)
This book's a must-have addition to your bookshelf if you're at all concerned about developing secure software -- and you ought to be. The book's format lends to quick reading of the most common security errors. Each "sin" breaks down into concise sections laying out an overview of the sin, what languages are effected, examples of the sin, redemption steps, extra defense measures, other resources on the sin, and a summary of the sin. Most useful to me as a developer are the sections on patterns for spotting the sin, how to look for the sin during code reviews, and how to test for the sin. The book's strengths are its concise discussion of each sin, and it's almost-cookbook format. You're able to quickly find exactly what you need in the book. The book also covers a wealth of languages: C/C++, C#, Java, Perl, VB/VB.NET, plus quite the major different platforms: Macs, *nix, and Windows. The concise nature of the book is also its weakness. Some of the examples aren't explained very well -- it's expected that the reader is experienced enough to figure out exactly what the errors are. This may overwhelm developers new to a particular language if they're not motivated enough to track down further information. However, more information and examples would weigh this book down and make it less attractive and useful. Use this book as a general (and sometimes specific) guide, but look elsewhere for specifics on implementation.
Help other customers find the most helpful reviews
Was this review helpful to you? Yes
No
|