Channels ▼

Mike Riley

Dr. Dobb's Bloggers

Web Security Testing Cookbook Book Review

November 21, 2008

Veteran web application developers know how hostile the Internet can be, and cookbooks like this one remind us that code vulnerabilities are as diverse as the applications they are unintentionally a part of.  Authors Paco Hope and Ben Walther outfit readers with free software security tools and instruct how to use these plug-ins and utilities to build more tamper-resistent apps.

This twelve chapter book adopts the usual O'Reilly cookbook-formatted problem/solution/discussion approach to some of the most prevalent web app security issues facing developers today.  The first four chapters supply the obligatory introduction, tool recommendations (all of which are freely available) and demonstrations, including one for the outstanding Firebug Firefox extension.  Once outfitted with the necessary testing software and a basic understanding of web-friendly data encoding formats, the remainder of the book reviews input attacks via such vectors as URL tampering and file uploads carrying malicious payloads (Chapter 5), website scanning and retrieval using WebScarab, LWP and Nikto (Chapter 6).  Chapter 7 and 8 are exclusively dedicated to learning and applying the cURL application and LibWWWPerl library in security testing scenarios.  Chapter 9 is a potpourri of recipes including revealing examples of password recovery abuse, predicting credentials and finding and testing random numbers in web applications.

Given the breadth of known security vulnerabilities in AJAX, I was disappointed that the authors spent less than 20 pages covering the most obvious AJAX XML and JSON injection attacks.  Given the considerable volume and rapid explosion of web apps and frameworks in the AJAX space these days, I would have preferred that the authors deliver an assessment of the security strength and known issues with more popular AJAX libraries like Dojo and  Alas, readers will have to look elsewhere for this type of information.  Another curious omission from the book is any mention of the popular penetration testing framework Metasploit (  Perhaps this is due to Metasploit's swiss army knife approach to security vulnerability analysis beyond web applications.

Chapter 11 demonstrates session manipulation via cookies, header authorizations, session ID expirations and cross-site request forgeries.  Finally, the book closes with a chapter supplying 17 different approaches that be used to do everything from modifying XSS to CLI, LDAP and SSI injection attacks.  Given the step-by-step detail of these attacks, one can imagine cracker-wannabes lifting the tips from this book for their own nefarious reasons.  For the white hat developers that Pac and Ben have written the book for, these descriptions easily show how delicate and effortless it can be to subvert poorly written applications that do not place as high a priority on security than they do on stability and performance.

In summary, web developer writing applications for public Internet consumption that are not already familiar with and practicing effective security design strategies should read this book.  Obtain a quick education on what the world will do to security negligent apps once they're accessible on the wild, wild Internet.  Developers not heeding this kind of advice are risking both their hard work and reputations as a consequence.

Authors: Paco Hope and Ben Walther
Publisher: O'Reilly Media
ISBN: 978-0-596-51483-9
Price: $39.99 US

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.