Home   FAQs   New Arrivals   Specials   Pricing & Shipping   Location   Corporate Services  
 Search:   
 View Cart   Check Out   
 
Browse by Subject
I.T
 .NET 3.5
 Windows 2000/XP
 Cisco
 Java
 Office XP
 VB
 ASP
 UML
 Web Design
 E-Commerce
 Project Management
 Macintosh
 Linux
 Windows Server 2008
 Sharepoint 2007
Certification
 MCITP
 MCTS
Economics and Business
 Accounting
 Business Information Systems
 Economics
 Finance
 Management
 Marketing
 Human Resources
 OneKey Textbooks

Ajax Security

by: Billy Hoffman, Bryan Sullivan

On-line Price: $43.95 (includes GST)

Paperback package 0

20%Off Retail Price

You save: $11.00

In Stock - Available for immediate delivery!
_____________________
N.Sydney : In Stock

Retail Price: $54.95

Publisher: ADDISON-WESLEY,21.01.08

Category: Level:

ISBN: 0321491939
ISBN13: 9780321491930

Add to Shopping Cart

Features and Benefits


    top


The hands-on, practical primer for professionals who want to prevent Ajax-related security vulnerabilities


  * Become familiar with security issue in the Web 2.0 world


  * Create secure Mashup websites


  * Identify vulnerabilities that may have crept in your code


  * Keep new vulnerabilities out of your code



Table of Contents

top



  Preface xvii


  Preface (The Real One) xvix

Chapter 1 Introduction to Ajax Security 1


  An Ajax Primer 2


          What Is Ajax? 2


          Asynchronous 3


          JavaScript 6


          XML 11


          Dynamic HTML (DHTML) 11


  The Ajax Architecture Shift 11


          Thick-Client Architecture 12


          Thin-Client Architecture 13


          Ajax: The Goldilocks of Architecture 15


          A Security Perspective: Thick-Client Applications 16


          A Security Perspective: Thin-Client Applications 17


          A Security Perspective: Ajax Applications 18


  A Perfect Storm of Vulnerabilities 19


          Increased Complexity, Transparency, and Size 19


          Sociological Issues 22


          Ajax Applications: Attractive and Strategic Targets 23


  Conclusions 24

Chapter 2 The Heist 25


  Eve 25


          Hacking HighTechVacations.net 26


          Hacking the Coupon System 26


          Attacking Client-Side Data Binding 32


          Attacking the Ajax API 36


  A Theft in the Night 42

Chapter 3 Web Attacks 45


  The Basic Attack Categories 45


          Resource Enumeration 46


          Parameter Manipulation 50


  Other Attacks 75


          Cross-Site Request Forgery (CSRF) 75


          Phishing 76


          Denial-of-Service (DoS) 77


  Protecting Web Applications from Resource Enumeration and Parameter


          Manipulation 77


          Secure Sockets Layer 78


  Conclusions 78

Chapter 4

Ajax Attack Surface 81


  Understanding the Attack Surface 81


  Traditional Web Application Attack Surface 83


          Form Inputs 83


          Cookies 84


          Headers 85


          Hidden Form Inputs 86


          Query Parameters 86


          Uploaded Files 89


  Traditional Web Application Attacks: A Report Card 90


  Web Service Attack Surface 92


          Web Service Methods 92


          Web Service Definitions 94


  Ajax Application Attack Surface 94


          The Origin of the Ajax Application Attack Surface 96


          Best of Both Worlds-for the Hacker 98


  Proper Input Validation 98


          The Problem with Blacklisting and Other Specific Fixes 99


          Treating the Symptoms Instead of the Disease 102


          Whitelist Input Validation 105


          Regular Expressions 109


          Additional Thoughts on Input Validation 109


  Validating Rich User Input 111


          Validating Markup Languages 111


          Validating Binary Files 113


          Validating JavaScript Source Code 114


          Validating Serialized Data 120


  The Myth of User-Supplied Content 122


  Conclusion 123

Chapter 5 Ajax Code Complexity 125


  Multiple Languages and Architectures 125


          Array Indexing 126


          String Operations 128


          Code Comments 129


          Someone Else's Problem 130


  JavaScript Quirks 132


          Interpreted, Not Compiled 132


          Weakly Typed 133


  Asynchronicity 135


          Race Conditions 135


          Deadlocks and the Dining Philosophers Problem 139


          Client-Side Synchronization 144


  Be Careful Whose Advice You Take 144


  Conclusions 145

Chapter 6 Transparency in Ajax Applications 147


  Black Boxes Versus White Boxes 147


          Example: MyLocalWeatherForecast.com 150


          Example: MyLocalWeatherForecast.com "Ajaxified" 152


          Comparison Conclusions 156


  The Web Application as an API 156


          Data Types and Method Signatures 158


  Specific Security Mistakes 158


          Improper Authorization 159


          Overly Granular Server API 161


          Session State Stored in JavaScript 164


          Sensitive Data Revealed to Users 165


          Comments and Documentation Included in Client-Side Code 166


          Data Transformation Performed on the Client 167


  Security through Obscurity 172


          Obfuscation 173


  Conclusions 174

Chapter 7 Hijacking Ajax Applications 175


  Hijacking Ajax Frameworks 176


          Accidental Function Clobbering 176


          Function Clobbering for Fun and Profit 178


  Hijacking On-Demand Ajax 184


  Hijacking JSON APIs 190


          Hijacking Object Literals 195


          Root of JSON Hijacking 195


          Defending Against JSON Hijacking 196


  Conclusions 199

Chapter 8 Attacking Client-Side Storage 201


  Overview of Client-Side Storage Systems 201


          General Client-Side Storage Security 202


  HTTP Cookies 204


          Cookie Access Control Rules 206


          Storage Capacity of HTTP Cookies 211


          Lifetime of Cookies 215


          Additional Cookie Storage Security Notes 216


          Cookie Storage Summary 216


  Flash Local Shared Objects 218


          Flash Local Shared Objects Summary 225


  DOM Storage 226


          Session Storage 227


          Global Storage 229


          The Devilish Details of DOM Storage 231


          DOM Storage Security 233


          DOM Storage Summary 234


  Internet Explorer userData 235


          Security Summary 240


  General Client-Side Storage Attacks and Defenses 240


          Cross-Domain Attacks 241


          Cross-Directory Attacks 242


          Cross-Port Attacks 243


  Conclusions 243

Chapter 9 Offline Ajax Applications 245


  Offline Ajax Applications 245


  Google Gears 247


          Native Security Features and Shortcomings of Google Gears 248


          Exploiting WorkerPool 251


          LocalServer Data Disclosure and Poisoning 253


          Directly Accessing the Google Gears Database 257


          SQL Injection and Google Gears 258


          How Dangerous Is Client-Side SQL Injection? 262


  Dojo.Offline 264


          Keeping the Key Safe 265


          Keeping the Data Safe 266


          Good Passwords Make for Good Keys 267


  Client-Side Input Validation Becomes Relevant 268


  Other Approaches to Offline Applications 270


  Conclusions 270

Chapter 10 Request Origin Issues 273


  Robots, Spiders, Browsers, and Other Creepy Crawlers 273


          "Hello! My Name Is Firefox. I Enjoy Chunked Encoding, PDFs, and


          Long Walks on the Beach." 275


  Request Origin Uncertainty and JavaScript 276


          Ajax Requests from the Web Server's Point of View 276


          Yourself, or Someone Like You 280


          Sending HTTP Requests with JavaScript 282


          JavaScript HTTP Attacks in a Pre-Ajax World 284


          Hunting Content with XMLHttpRequest 286


          Combination XSS/XHR Attacks in Action 290


  Defenses 292


  Conclusions 294

Chapter 11 Web Mashups and Aggregators 295


  Machine-Consumable Data on the Internet 296


          Early 90's: Dawn of the Human Web 296


          Mid 90s: The Birth of the Machine Web 297


          2000s: The Machine Web Matures 298


          Publicly Available Web Services 299


  Mashups: Frankenstein on the Web 301


          ChicagoCrime.org 302


          HousingMaps.com 303


          Other Mashups 304


  Constructing Mashups 304


          Mashups and Ajax 306


  Bridges, Proxies, and Gateways-Oh My! 308


          Ajax Proxy Alternatives 309


  Attacking Ajax Proxies 310


          Et Tu, HousingMaps.com? 312


  Input Validation in Mashups 314


  Aggregate Sites 317


  Degraded Security and Trust 324


  Conclusions 327

Chapter 12 Attacking the Presentation Layer 329


  A Pinch of Presentation Makes the Content Go Down 329


  Attacking the Presentation Layer 333


  Data Mining Cascading Style Sheets 334


  Look and Feel Hacks 337


          Advanced Look and Feel Hacks 341


  Embedded Program Logic 345


  Cascading Style Sheets Vectors 347


          Modifying the Browser Cache 348


  Preventing Presentation Layer Attacks 352


  Conclusion 353

Chapter 13 JavaScript Worms 355


  Overview of JavaScript Worms 355


          Traditional Computer Viruses 356


  JavaScript Worms 359


          JavaScript Worm Construction 361


          JavaScript Limitations 363


          Propagating JavaScript Worms 364


          JavaScript Worm Payloads 364


          Putting It All Together 372


  Case Study: Samy Worm 373


          How It Worked 374


          The Virus' Payload 377


          Conclusions About the Samy Worm 379


  Case Study: Yamanner Worm (JS/Yamanner-A) 380


          How It Worked 380


          The Virus' Payload 383


          Conclusions About the Yamanner Worm 384


  Lessons Learned from Real JavaScript Worms 387


  Conclusions 389

Chapter 14 Testing Ajax Applications 391


  Black Magic 391


  Not Everyone Uses a Web Browser to Browse the Web 396


          Catch-22 398


  Security Testing Tools-or Why Real Life Is Not Like Hollywood 399


          Site Cataloging 400


          Vulnerability Detection 401


          Analysis Tool: Sprajax 403


          Analysis Tool: Paros Proxy 406


          Analysis Tool: LAPSE (Lightweight Analysis for Program Security in Eclipse) 408


          Analysis Tool:WebInspect 409


  Additional Thoughts on Security Testing 411

Chapter 15 Analysis of Ajax Frameworks 413


  ASP.NET 413


          ASP.NET AJAX (formerly Atlas) 414


          ScriptService 417


          Security Showdown: UpdatePanel Versus ScriptService 419


          ASP.NET AJAX and WSDL 420


          ValidateRequest 424


          ViewStateUserKey 425


          ASP.NET Configuration and Debugging 426


  PHP 427


          Sajax 427


          Sajax and Cross-Site Request Forgery 430


  Java EE 431


          Direct Web Remoting (DWR) 432


  JavaScript Frameworks 434


          A Warning About Client-Side Code 435


          Prototype 435


  Conclusions 437

Appendix A Samy Source Code 439

Appendix B Source Code for Yamanner Worm 447

Index 453



About the Authors

top


Billy Hoffman is the lead researcher for HP Security Labs of HP Software. At HP, Billy focuses on JavaScript source code analysis, automated discovery of Web application vulnerabilities, and Web crawling technologies. He has worked in the security space since 2001 after he wrote an article on cracking software for 2600, "The Hacker Quarterly," and learned that people would pay him to be curious. Over the years Billy has worked a variety of projects including reverse engineering file formats, micro-controllers, JavaScript malware, and magstripes. He is the creator of Stripe Snoop, a suite of research tools that captures, modifies, validates, generates, analyzes, and shares data from magstripes. Billy's work has been featured in Wired, Make magazine, Slashdot, G4TechTV, and in various other journals and Web sites. Billy is a regular presenter at hacker conferences including Toorcon, Shmoocon, Phreaknic, Summercon, and Outerz0ne and is active in the South East hacking scene. Occasionally the suits make him take off the black t-shirt and he speaks at more mainstream security events including RSA, Infosec, AJAXWorld, and Black Hat. Billy graduated from the Georgia Institute of Technology in 2005 with a BS in Computer Science with specializations in networking and embedded systems. He lives in Atlanta with his wife and two tubby and very spoiled cats.

Bryan Sullivan is a software development manager for the Application Security Center division of HP Software. He has been a professional software developer and development manager for over 12 years, with the last five years focused on the Internet security software industry. Prior to HP, Bryan was a security researcher for SPI Dynamics, a leading Web application security company acquired by HP in August 2007.While at SPI, he created the DevInspect product, which analyzes Web applications for security vulnerabilities during development. Bryan is a frequent speaker at industry events, most recently AjaxWorld, Black Hat, and RSA. He was involved in the creation of the Application Vulnerability Description Language (AVDL) and has three patents on security assessment and remediation methodologies pending review. He is a graduate of the Georgia Institute of Technology

with a BS in Applied Mathematics. When he's not trying to break the Internet, Bryan spends as much time as he can on the golf links. If any Augusta National members are reading this, Bryan would be exceedingly happy to tell you everything he knows about Ajax security over a round or two.