FREE SHIPPING BOTH WAYS
ON EVERY ORDER!
LIST PRICE:
$45.00

Sorry, this item is currently unavailable.

19 Deadly Sins of Software Security

ISBN: 9780072260854 | 0072260858
Edition: 1st
Format: Paperback
Publisher: McGraw-Hill Osborne Media
Pub. Date: 7/26/2005

Why Rent from Knetbooks?

Because Knetbooks knows college students. Our rental program is designed to save you time and money. Whether you need a textbook for a semester, quarter or even a summer session, we have an option for you. Simply select a rental period, enter your information and your book will be on its way!

Top 5 reasons to order all your textbooks from Knetbooks:

  • We have the lowest prices on thousands of popular textbooks
  • Free shipping both ways on ALL orders
  • Most orders ship within 48 hours
  • Need your book longer than expected? Extending your rental is simple
  • Our customer support team is always here to help
SummaryTable of ContentsAuthor Biography
John Viega is the CTO of Secure Software. David LoBlanc is Chief Software Architect for Webroot Software. Michael Howard is a Senior Security Program Manager in the Security Engineering Group at Microsoft Corporation.

This essential book for all software developers--regardless of platform, language, or type of application--outlines the "19 deadly sins" of software security and shows how to fix each one. Best-selling authors Michael Howard and David LeBlanc, who teach Microsoft employees how to secure code, have par... MORE
Forewordxv
Acknowledgmentsxvii
Introductionxix
Buffer Overruns
1(16)
Overvi... MORE
2(1)
Affected Languages
2(1)
The Sin Explained
3(6)
Sinful C/C++
6(2)
Related Sins
8(1)
Spotting the Sin Pattern
9(1)
Spotting the Sin During Code Review
9(1)
Testing Techniques to Find the Sin
9(1)
Example Sins
10(2)
CVE-1999-0042
10(1)
CVE-2000-0389--CVE-2000-0392
11(1)
CVE-2002-0842, CVE-2003-0095, CAN-2003-0096
11(1)
CAN-2003-0352
12(1)
Redemption Steps
12(2)
Replace Dangerous String Handling Functions
12(1)
Audit Allocations
13(1)
Check Loops and Array Accesses
13(1)
Replace C String Buffers with C++ Strings
13(1)
Replace Static Arrays with STL Containers
13(1)
Use Analysis Tools
13(1)
Extra Defensive Measures
14(1)
Stack Protection
14(1)
Non-executable Stack and Heap
14(1)
Other Resources
15(1)
Summary
16(1)
Format String Problems
17(8)
Overview of the Sin
18(1)
Affected Languages
18(1)
The Sin Explained
18(3)
Sinful C/C++
21(1)
Related Sins
21(1)
Spotting the Sin Pattern
21(1)
Spotting the Sin During Code Review
22(1)
Testing Techniques to Find the Sin
22(1)
Example Sins
22(1)
CVE-2000-0573
23(1)
CVE-2000-0844
23(1)
Redemption Steps
23(1)
C/C++ Redemption
23(1)
Extra Defensive Measures
24(1)
Other Resources
24(1)
Summary
24(1)
Integer Overflows
25(20)
Overview of the Sin
26(1)
Affected Languages
26(1)
The Sin Explained
26(9)
Sinful C and C++
26(5)
Sinful C#
31(2)
Sinful Visual Basic and Visual Basic .NET
33(1)
Sinful Java
34(1)
Sinful Perl
34(1)
Spotting the Sin Pattern
35(1)
Spotting the Sin During Code Review
36(3)
C/C++
36(2)
C#
38(1)
Java
38(1)
Visual Basic and Visual Basic .NET
38(1)
Perl
39(1)
Testing Techniques to Find the Sin
39(1)
Example Sins
39(1)
Flaw in Windows Script Engine Could Allow Code Execution
39(1)
Integer Overflow in the SOAPParameter Object Constructor
39(1)
Heap Overrun in HTR Chunked Encoding Could Enable Web Server Compromise
40(1)
Redemption Steps
40(2)
Extra Defensive Measures
42(1)
Other Resources
42(1)
Summary
43(2)
SQL Injection
45(18)
Overview of the Sin
46(1)
Affected Languages
46(1)
The Sin Explained
46(6)
Sinful C#
47(1)
Sinful PHP
48(1)
Sinful Perl/CGI
48(1)
Sinful Java and JDBC
49(1)
Sinful SQL
50(1)
Related Sins
51(1)
Spotting the Sin Pattern
52(1)
Spotting the Sin During Code Review
52(1)
Testing Techniques to Find the Sin
53(1)
Example Sins
54(1)
CAN-2004-0348
54(1)
CAN-2002-0554
55(1)
Redemption Steps
55(4)
Validate All Input
55(1)
Never Use String Concatenation to Build SQL Statements
55(1)
PHP 5.0 and MySQL 4.1 or Later Redemption
56(1)
Perl/CGI Redemption
57(1)
Java Using JDBC Redemption
58(1)
ColdFusion Redemption
59(1)
SQL Redemption
59(1)
Extra Defensive Measures
59(1)
Other Resources
59(1)
Summary
60(3)
Command Injection
63(10)
Overview of the Sin
64(1)
Affected Languages
64(1)
The Sin Explained
64(2)
Related Sins
66(1)
Spotting the Sin Pattern
66(1)
Spotting the Sin During Code Review
66(2)
Testing Techniques to Find the Sin
68(1)
Example Sins
68(1)
CAN-2001-1187
68(1)
CAN-2002-0652
69(1)
Redemption Steps
69(3)
Data Validation
69(2)
When a Check Fails
71(1)
Extra Defensive Measures
72(1)
Other Resources
72(1)
Summary
72(1)
Failing to Handle Errors
73(10)
Overview of the Sin
74(1)
Affected Languages
74(1)
The Sin Explained
74(5)
Yielding Too Much Information
74(1)
Ignoring Errors
74(1)
Misinterpreting Errors
75(1)
Using Useless Error Values
75(1)
Handling the Wrong Exceptions
75(1)
Handling All Exceptions
76(1)
Sinful C/C++
76(1)
Sinful C/C++ on Windows
77(1)
Sinful C++
78(1)
Sinful C#, VB.NET, and Java
78(1)
Related Sins
79(1)
Spotting the Sin Pattern
79(1)
Spotting the Sin During Code Review
79(1)
Testing Techniques to Find the Sin
80(1)
Example Sin
80(1)
CAN-2004-0077 Linux Kernel do_mremap
80(1)
Redemption Steps
80(2)
C/C++ Redemption
80(1)
C#, VB.NET, and Java Redemption
81(1)
Other Resources
82(1)
Summary
82(1)
Cross-Site Scripting
83(16)
Overview of the Sin
84(1)
Affected Languages
84(1)
The Sin Explained
84(3)
Sinful C/C++ ISAPI Application or Filter
85(1)
Sinful ASP
85(1)
Sinful ASP.NET Forms
86(1)
Sinful JSP
86(1)
Sinful PHP
86(1)
Sinful CGI Using Perl
86(1)
Sinful mod_perl
87(1)
Spotting the Sin Pattern
87(1)
Spotting the Sin During Code Review
87(1)
Testing Techniques to Find the Sin
88(1)
Example Sins
89(1)
IBM Lotus Domino Cross-Site Scripting and HTML Injection Vulnerabilities
89(1)
Oracle HTTP Server ``isqlplus'' Input Validation Flaws Let Remote Users Conduct Cross-Site Scripting Attacks
90(1)
CVE-2002-0840
90(1)
Redemption Steps
90(6)
ISAPI C/C++ Redemption
90(1)
ASP Redemption
91(1)
ASP.NET Forms Redemption
91(1)
JSP Redemption
92(2)
PHP Redemption
94(1)
CGI Redemption
95(1)
mod_perl Redemption
95(1)
A Note on HTML Encode
96(1)
Extra Defensive Measures
96(1)
Other Resources
97(1)
Summary
98(1)
Failing to Protect Network Traffic
99(14)
Overview of the Sin
100(1)
Affected Languages
100(1)
The Sin Explained
100(2)
Related Sins
102(1)
Spotting the Sin Pattern
103(1)
Spotting the Sin During Code Review
103(3)
Testing Techniques to Find the Sin
106(1)
Example Sins
106(2)
TCP/IP
107(1)
E-mail Protocols
107(1)
E*Trade
107(1)
Redemption Steps
108(3)
Low-Level Recommendations
108(3)
Extra Defensive Measures
111(1)
Other Resources
111(1)
Summary
111(2)
Use of Magic URLs and Hidden Form Fields
113(12)
Overview of the Sin
114(1)
Affected Languages
114(1)
The Sin Explained
114(1)
Magic URLs
114(1)
Hidden Form Fields
115(1)
Related Sins
115(1)
Spotting the Sin Pattern
115(1)
Spotting the Sin During Code Review
116(1)
Testing Techniques to Find the Sin
117(1)
Example Sins
118(1)
CAN-2000-1001
118(1)
MaxWebPortal Hidden Form Field Modification
118(1)
Redemption Steps
118(5)
Attacker Views the Data
119(1)
Attacker Replays the Data
119(2)
Attacker Predicts the Data
121(1)
Attacker Changes the Data
122(1)
Extra Defensive Measures
123(1)
Other Resources
123(1)
Summary
123(2)
Improper Use of SSL and TLS
125(18)
Overview of the Sin
126(1)
Affected Languages
126(1)
The Sin Explained
126(4)
Related Sins
129(1)
Spotting the Sin Pattern
130(1)
Spotting the Sin During Code Review
130(2)
Testing Techniques to Find the Sin
132(1)
Example Sins
132(2)
E-mail Clients
132(1)
Safari Web Browser
133(1)
The Stunnel SSL Proxy
133(1)
Redemption Steps
134(6)
Choosing a Protocol Version
134(1)
Choosing a Cipher Suite
135(1)
Ensuring Certificate Validity
136(1)
Validating the Hostname
137(1)
Checking Certificate Revocation
138(2)
Extra Defensive Measures
140(1)
Other Resources
140(1)
Summary
140(3)
Use of Weak Password-Based Systems
143(18)
Overview of the Sin
144(1)
Affected Languages
144(1)
The Sin Explained
144(2)
Related Sins
146(1)
Spotting the Sin Pattern
146(1)
Spotting the Sin During Code Review
146(3)
Password Content Policy
147(1)
Password Changes and Resets
147(1)
Password Protocols
148(1)
Password Handling and Storage
148(1)
Testing Techniques to Find the Sin
149(1)
Example Sins
149(2)
CVE-2005-1505
150(1)
CVE-2005-0432
150(1)
The TENEX Bug
150(1)
The Paris Hilton Hijacking
151(1)
Redemption Steps
151(7)
Multifactor Authentication
152(1)
Storing and Checking Passwords
152(4)
Guidelines for Choosing Protocols
156(1)
Guidelines for Password Resets
156(1)
Guidelines for Password Choice
157(1)
Other Guidelines
158(1)
Extra Defensive Measures
158(1)
Other Resources
159(1)
Summary
159(2)
Failing to Store and Protect Data Securely
161(22)
Overview of the Sin
162(1)
Affected Languages
162(1)
The Sin Explained
162(4)
Weak Access Controls to ``Protect'' Secret Data
162(2)
Sinful Access Controls
164(2)
Embedding Secret Data in Code
166(1)
Related Sins
166(1)
Spotting the Sin Pattern
166(1)
Spotting the Sin During Code Review
167(1)
Testing Techniques to Find the Sin
168(2)
Example Sins
170(2)
CVE-2000-0100
171(1)
CAN-2002-1590
171(1)
CVE-1999-0886
171(1)
CAN-2004-0311
171(1)
CAN-2004-0391
171(1)
Redemption Steps
172(8)
Use the Operating System's Security Technologies
172(1)
C/C++ Windows 2000 and Later Redemption
173(2)
ASP.NET 1.1 and Later Redemption
175(1)
C# .NET Framework 2.0 Redemption
175(1)
C/C++ Mac OS X v10.2 and Later Redemption
175(1)
Redemption with No Operating System Help (or Keeping Secrets Out of Harm's Way)
176(2)
A Note on Java and the Java KeyStore
178(2)
Extra Defensive Measures
180(1)
Other Resources
180(1)
Summary
181(2)
Information Leakage
183(14)
Overview of the Sin
184(1)
Affected Languages
184(1)
The Sin Explained
184(6)
Side Channels
185(1)
TMI: Too Much Information!
186(2)
A Model for Information Flow Security
188(2)
Sinful C# (and Any Other Language)
190(1)
Related Sins
190(1)
Spotting the Sin Pattern
190(1)
Spotting the Sin During Code Review
191(1)
Testing Techniques to Find the Sin
192(1)
The Stolen Laptop Scenario
192(1)
Example Sins
192(2)
Dan Bernstein's AES Timing Attack
192(1)
CAN-2005-1411
193(1)
CAN-2005-1133
193(1)
Redemption Steps
194(1)
C# (and Other Languages) Redemption
194(1)
Network Locality Redemption
195(1)
Extra Defensive Measures
195(1)
Other Resources
195(1)
Summary
196(1)
Improper File Access
197(10)
Overview of the Sin
198(1)
Affected Languages
198(1)
The Sin Explained
198(3)
Sinful C/C++ on Windows
199(1)
Sinful C/C++
199(1)
Sinful Perl
200(1)
Sinful Python
200(1)
Related Sins
200(1)
Spotting the Sin Pattern
201(1)
Spotting the Sin During Code Review
201(1)
Testing Techniques to Find the Sin
202(1)
Example Sins
202(1)
CAN-2005-0004
202(1)
CAN-2005-0799
202(1)
CAN-2004-0452 and CAN-2004-0448
203(1)
CVE-2004-0115 Microsoft Virtual PC for the Macintosh
203(1)
Redemption Steps
203(2)
Perl Redemption
204(1)
C/C++ Redemption on *nix
204(1)
C/C++ Redemption on Windows
204(1)
Getting the Location of the User's Temporary Directory
205(1)
.NET Code Redemption
205(1)
Extra Defensive Measures
205(1)
Other Resources
206(1)
Summary
206(1)
Trusting Network Name Resolution
207(10)
Overview of the Sin
208(1)
Affected Languages
208(1)
The Sin Explained
208(3)
Sinful Applications
210(1)
Related Sins
211(1)
Spotting the Sin Pattern
211(1)
Spotting the Sin During Code Review
212(1)
Testing Techniques to Find the Sin
212(1)
Example Sins
212(1)
CVE-2002-0676
213(1)
CVE-1999-0024
213(1)
Redemption Steps
213(1)
Other Resources
214(1)
Summary
215(2)
Race Conditions
217(10)
Overview of the Sin
218(1)
Affected Languages
218(1)
The Sin Explained
218(3)
Sinful Code
220(1)
Related Sins
220(1)
Spotting the Sin Pattern
221(1)
Spotting the Sin During Code Review
221(1)
Testing Techniques to Find the Sin
222(1)
Example Sins
222(1)
CVE-2001-1349
222(1)
CAN-2003-1073
223(1)
CVE-2000-0849
223(1)
Redemption Steps
223(2)
Extra Defensive Measures
225(1)
Other Resources
225(1)
Summary
226(1)
Unauthenticated Key Exchange
227(8)
Overview of the Sin
228(1)
Affected Languages
228(1)
The Sin Explained
228(1)
Related Sins
229(1)
Spotting the Sin Pattern
230(1)
Spotting the Sin During Code Review
230(1)
Testing Techniques to Find the Sin
231(1)
Example Sins
231(1)
Novell Netware MITM Attack
231(1)
CAN-2004-0155
231(1)
Redemption Steps
232(1)
Extra Defensive Measures
232(1)
Other Resources
233(1)
Summary
233(2)
Cryptographically Strong Random Numbers
235(12)
Overview of the Sin
236(1)
Affected Languages
236(1)
The Sin Explained
236(3)
Sinful NonCryptographic Generators
237(1)
Sinful Cryptographic Generators
237(1)
Sinful True Random Number Generators
238(1)
Related Sins
239(1)
Spotting the Sin Pattern
239(1)
Spotting the Sin During Code Review
239(2)
When Random Numbers Should Have Been Used
239(1)
Finding Places that Use PRNGs
240(1)
Determining Whether a CRNG Is Seeded Properly
241(1)
Testing Techniques to Find the Sin
241(1)
Example Sins
242(1)
The Netscape Browser
242(1)
OpenSSL Problems
242(1)
Redemption Steps
243(3)
Windows
243(1)
.NET Code
243(1)
Unix
244(1)
Java
245(1)
Replaying Number Streams
245(1)
Extra Defensive Measures
246(1)
Other Resources
246(1)
Summary
246(1)
Poor Usability
247(14)
Overview of the Sin
248(1)
Affected Languages
248(1)
The Sin Explained
248(2)
Who Are Your Users?
249(1)
The Minefield: Presenting Security Information to Your Users
249(1)
Related Sins
250(1)
Spotting the Sin Pattern
250(1)
Spotting the Sin During Code Review
250(1)
Testing Techniques to Find the Sin
251(1)
Example Sins
251(2)
SSL/TLS Certificate Authentication
251(1)
Internet Explorer 4.0 Root Certificate Installation
252(1)
Redemption Steps
253(6)
When Users Are Involved, Make the UI Simple and Clear
253(1)
Make Security Decisions for Users
253(2)
Make Selective Relaxation of Security Policy Easy
255(1)
Clearly Indicate Consequences
255(3)
Make It Actionable
258(1)
Provide Central Management
259(1)
Other Resources
259(1)
Summary
259(2)
A Mapping the 19 Deadly Sins to the OWASP ``Top Ten''
261(2)
B Summary of Do's and Don'ts
263(10)
Sin 1: Buffer Overruns Summary
264(1)
Sin 2: Format String Problems Summary
264(1)
Sin 3: Integer Overflows Summary
264(1)
Sin 4: SQL Injection Summary
265(1)
Sin 5: Command Injection Summary
266(1)
Sin 6: Failing to Handle Errors Summary
266(1)
Sin 7: Cross-Site Scripting Summary
266(1)
Sin 8: Failing to Protect Network Traffic Summary
266(1)
Sin 9: Use of Magic URLs and Hidden Form Fields Summary
267(1)
Sin 10: Improper Use of SSL and TLS Summary
267(1)
Sin 11: Use of Weak Password-Based Systems Summary
268(1)
Sin 12: Failing to Store and Protect Data Securely Summary
269(1)
Sin 13: Information Leakage Summary
270(1)
Sin 14: Improper File Access Summary
270(1)
Sin 15: Trusting Network Name Resolution Summary
270(1)
Sin 16: Race Conditions Summary
271(1)
Sin 17: Unauthenticated Key Exchange Summary
271(1)
Sin 18: Cryptographically Strong Random Numbers Summary
271(1)
Sin 19: Poor Usability Summary
271(2)
Index273
Michael Howard is a senior security program manager in the security engineering group at Microsoft Corporation, and a co-author of the award-winning Writing Secure Code. He is a co-author of Basic Training in IEEE Security and Privacy Magazine and a co-author of the National Cyber Security Task Force “Processes to produce Secure Software” document for the Department of Homeland Security. As an author of the Security Development Lifecycle, Michael spends most of his time is spent defining and enforcing security best practice and software development process improvements to deliver more secure software to normal humans.

David LeBlanc, Ph.D., is currently Chief Software Architect for Webroot Software. Prior to joining Webroot, he served as security architect for Microsoft's Office division, was a founding member of the Trustworthy Computing Initiative, and worked as a white-hat hacker in Microsoft's network security group. David is also co-author of Writing Secure Code and Assessing Network Security, as well as numerous articles. On good days, he'll be found riding the trails on his horse with his wife, Jennifer.

John Viega discovered the 19 deadly programming flaws that received such press and media attention, and this book is based on his discovery. He is the Founder and Chief Scientist of Secure Software(www.securesoftware.com), is a well-known security expert, and coauthor of Building Secure Software (Addison-Wesley), Network Security with OpenSSL (O'Reilly) an Adjuct Professor of Computer Science at Virginia Tech (Blacksburg, VA) and Senior Policy Researcher at the Cyberspace Policy Institute, and he serves on the Technical Advisory Board for the Open Web Applications Security Project. He also founded a Washington, D.C. area security interest group that conducts monthly lectures presented by leading experts in the field. John is responsible for numerous software security tools, and is the original author of Mailman, the GNU mailing list manager. He holds a B.A. and M.S. in Computer Science from the University of Virginia. He is the author or coauthor of nearly 80 technical publications, including numerous refered research papers and trade articles. He is coauthor of Building Secure Software, Network Security and Cryptography with OpenSSL and The Secure Programming Cookbook for C and C++.

Related Products


  • 24 Deadly Sins of Software Security : Programming Flaws and How to Fix Them
    24 Deadly Sins of Software Sec...


Please wait while this item is added to your cart...