ebook img

Apress - Pro PHP Security - Snyder - 2005 PDF

529 Pages·2005·13.35 MB·English
by  
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Apress - Pro PHP Security - Snyder - 2005

SnyderSouthwell_5084Front.fm Page i Thursday, July 28, 2005 4:00 PM Pro PHP Security ■ ■ ■ Chris Snyder and Michael Southwell SnyderSouthwell_5084Front.fm Page ii Thursday, July 28, 2005 4:00 PM Pro PHP Security Copyright © 2005 by Chris Snyder and Michael Southwell All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or by any information storage or retrieval system, without the prior written permission of the copyright owner and the publisher. ISBN (pbk): 1-59059-508-4 Printed and bound in the United States of America 9 8 7 6 5 4 3 2 1 Trademarked names may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, we use the names only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. Lead Editor: Jason Gilmore Technical Reviewer: Timothy Boronczyk Editorial Board: Steve Anglin, Dan Appleman, Ewan Buckingham, Gary Cornell, Tony Davis, Jason Gilmore, Jonathan Hassell, Chris Mills, Dominic Shakeshaft, Jim Sumser Associate Publisher: Grace Wong Project Manager: Beth Christmas Copy Edit Manager: Nicole LeClerc Copy Editor: Ami Knox Assistant Production Director: Kari Brooks-Copony Production Editor: Katie Stence Compositors: Susan Glinert and Pat Christenson Proofreader: April Eddy Indexer: Michael Brinkman Artist: Wordstop Technologies Pvt. Ltd., Chennai Interior Designer: Van Winkle Design Group Cover Designer: Kurt Krames Manufacturing Director: Tom Debolski Distributed to the book trade worldwide by Springer-Verlag New York, Inc., 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax 201-348-4505, e-mail (cid:1)(cid:2)(cid:3)(cid:4)(cid:2)(cid:5)(cid:6)(cid:7)(cid:8)(cid:9)(cid:5)(cid:10)(cid:2)(cid:11)(cid:7)(cid:12)(cid:4)(cid:2)(cid:6)(cid:5)(cid:13)(cid:14)(cid:15)(cid:16)(cid:1)(cid:14), or visit (cid:17)(cid:18)(cid:18)(cid:10)(cid:19)(cid:20)(cid:20)(cid:21)(cid:21)(cid:21)(cid:15)(cid:5)(cid:10)(cid:2)(cid:11)(cid:7)(cid:12)(cid:4)(cid:2)(cid:1)(cid:7)(cid:22)(cid:11)(cid:7)(cid:4)(cid:15)(cid:16)(cid:1)(cid:14). For information on translations, please contact Apress directly at 2560 Ninth Street, Suite 219, Berkeley, CA 94710. Phone 510-549-5930, fax 510-549-5939, e-mail (cid:11)(cid:7)(cid:23)(cid:1)(cid:9)(cid:24)(cid:10)(cid:2)(cid:4)(cid:5)(cid:5)(cid:15)(cid:16)(cid:1)(cid:14), or visit (cid:17)(cid:18)(cid:18)(cid:10)(cid:19)(cid:20)(cid:20)(cid:21)(cid:21)(cid:21)(cid:15)(cid:24)(cid:10)(cid:2)(cid:4)(cid:5)(cid:5)(cid:15)(cid:16)(cid:1)(cid:14). The information in this book is distributed on an “as is” basis, without warranty. Although every precaution has been taken in the preparation of this work, neither the author(s) nor Apress shall have any liability to any person or entity with respect to any loss or damage caused or alleged to be caused directly or indirectly by the information contained in this work. The source code for this book is available to readers at (cid:17)(cid:18)(cid:18)(cid:10)(cid:19)(cid:20)(cid:20)(cid:21)(cid:21)(cid:21)(cid:15)(cid:24)(cid:10)(cid:2)(cid:4)(cid:5)(cid:5)(cid:15)(cid:16)(cid:1)(cid:14) in the Downloads section. SnyderSouthwell_5084Front.fm Page iii Thursday, July 28, 2005 4:00 PM Contents at a Glance About the Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii About the Technical Reviewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xix Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xxi Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xxiii PART 1 The Importance of Security ■ ■ ■ CHAPTER 1 Why Is Secure Programming a Concern? . . . . . . . . . . . . . . . . . . . . . . . 3 PART 2 Maintaining a Secure Environment ■ ■ ■ CHAPTER 2 Dealing with Shared Hosts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 CHAPTER 3 Maintaining Separate Development and Production Environments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 CHAPTER 4 Keeping Software Up to Date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 CHAPTER 5 Using Encryption I: Theory. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 CHAPTER 6 Using Encryption II: Practice. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 CHAPTER 7 Securing Network Connections I: SSL . . . . . . . . . . . . . . . . . . . . . . . . 109 CHAPTER 8 Securing Network Connections II: SSH . . . . . . . . . . . . . . . . . . . . . . . 139 CHAPTER 9 Controlling Access I: Authentication. . . . . . . . . . . . . . . . . . . . . . . . . . 175 CHAPTER 10 Controlling Access II: Permissions and Restrictions . . . . . . . . . . . 209 PART 3 Practicing Secure PHP Programming ■ ■ ■ CHAPTER 11 Validating User Input. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 CHAPTER 12 Preventing SQL Injection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 CHAPTER 13 Preventing Cross-Site Scripting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 CHAPTER 14 Preventing Remote Execution. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 CHAPTER 15 Enforcing Security for Temporary Files . . . . . . . . . . . . . . . . . . . . . . . 303 CHAPTER 16 Preventing Session Hijacking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 iii SnyderSouthwell_5084Front.fm Page iv Thursday, July 28, 2005 4:00 PM iv ■ CONTENTS AT A GLANCE PART 4 Practicing Secure Operations ■ ■ ■ CHAPTER 17 Allowing Only Human Users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 CHAPTER 18 Verifying Your Users’ Identities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347 CHAPTER 19 Using Roles to Authorize Actions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359 CHAPTER 20 Adding Accountability to TrackYour Users. . . . . . . . . . . . . . . . . . . . 377 CHAPTER 21 Preventing Data Loss. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399 CHAPTER 22 Safely Executing System Commands. . . . . . . . . . . . . . . . . . . . . . . . . 419 CHAPTER 23 Handling Remote Procedure Calls Safely . . . . . . . . . . . . . . . . . . . . . 455 CHAPTER 24 Taking Advantage of PeerReview. . . . . . . . . . . . . . . . . . . . . . . . . . . . 467 INDEX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479 SnyderSouthwell_5084Front.fm Page v Thursday, July 28, 2005 4:00 PM CCoonntteennttss About the Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii About the Technical Reviewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xix Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xxi Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xxiii PART 1 The Importance of Security ■ ■ ■ ■ CHAPTER 1 Why Is Secure Programming a Concern? . . . . . . . . . . . . . . . . . 3 What Is Computer Security? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Why Absolute Computer Security Is Impossible . . . . . . . . . . . . . . . . . . . . . 4 What Kinds of Attacks Are Web Applications Vulnerable To? . . . . . . . . . . 4 When Users Provide Information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 When Information Is Provided to Users . . . . . . . . . . . . . . . . . . . . . . . . 8 In Other Cases. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 PART 2 Maintaining a Secure Environment ■ ■ ■ ■ CHAPTER 2 Dealing with Shared Hosts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 What Are the Dangers of Shared Hosting? . . . . . . . . . . . . . . . . . . . . . . . . 14 An Inventory of Effects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Minimizing System-level Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 A Reasonable Standard of Protection for Multiuser Hosts . . . . . . . . . . . . 18 Allow No Shells. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Set Aggressive Database Permissions. . . . . . . . . . . . . . . . . . . . . . . . 19 Practice Translucency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Compile Your Configuration Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Keep Local Copies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Back Up Your Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Virtual Machines: A Safer Alternative to Traditional Virtual Hosting . . . . 21 v SnyderSouthwell_5084Front.fm Page vi Thursday, July 28, 2005 4:00 PM vi ■ CONTENTS Shared Hosts from a System Administrator’s Point of View . . . . . . . . . . 22 Add a User for Each Domain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Fill Out the Filesystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Sample Apache Virtual Host Configuration . . . . . . . . . . . . . . . . . . . . 23 Create a Secure Database. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Restrict Access to (cid:1)(cid:2)(cid:3) Only . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 ■ CHAPTER 3 Maintaining Separate Development and Production Environments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Why Separate Development and Production Servers? . . . . . . . . . . . . . . . 27 Effective Production Server Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 ■ CHAPTER 4 Keeping Software Up to Date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Installing Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Packages and Ports vs. Building by Hand . . . . . . . . . . . . . . . . . . . . . 41 Compiling by Hand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Updating Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Keeping Apache and PHP Easily Updatable. . . . . . . . . . . . . . . . . . . . 48 Monitoring Version Revisions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Recompiling After Updating Libraries. . . . . . . . . . . . . . . . . . . . . . . . . 51 Using a Gold Server to Distribute Updates. . . . . . . . . . . . . . . . . . . . . 52 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 ■ CHAPTER 5 Using Encryption I: Theory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Encryption vs. Hashing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Encryption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Hashing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Algorithm Strength . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 A Note on Password Strength . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Recommended Encryption Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Symmetric Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Diffie-Hellman-Merkle Key Exchange. . . . . . . . . . . . . . . . . . . . . . . . . 63 Asymmetric Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Email Encryption Techniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 SnyderSouthwell_5084Front.fm Page vii Thursday, July 28, 2005 4:00 PM ■ CONTENTS vii Recommended Hash Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 CRC32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 MD5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 SHA-1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 DSA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 New Hashing Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Related Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 base64. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 XOR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Random Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Blocks, Modes, and Initialization Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Streams and Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Initialization Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 US Government Restrictions on Exporting Encryption Algorithms . . . . . . 73 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 ■ CHAPTER 6 Using Encryption II: Practice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Protecting Passwords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Protecting Sensitive Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Symmetric Encryption in PHP: The (cid:4)(cid:2)(cid:5)(cid:6)(cid:3)(cid:7) Functions . . . . . . . . . . 80 Asymmetric Encryption in PHP: RSA and the OpenSSL Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Verifying Important or At-risk Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 Verification Using Digests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 Verification Using Signatures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 ■ CHAPTER 7 Securing Network Connections I: SSL . . . . . . . . . . . . . . . . . . . 109 Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Secure Sockets Layer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 Transport Layer Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 Certificates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 The SSL Protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Providing SSL on Your Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 HTTP Over SSL: Apache’s (cid:4)(cid:8)(cid:9)(cid:10)(cid:1)(cid:1)(cid:11) . . . . . . . . . . . . . . . . . . . . . . . . 116 Obtaining a Server Certificate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Application-level SSL Support. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 SnyderSouthwell_5084Front.fm Page viii Thursday, July 28, 2005 4:00 PM viii ■ CONTENTS Connecting to SSL Servers Using PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 PHP’s Streams, Wrappers, and Transports . . . . . . . . . . . . . . . . . . . 128 The SSL and TLS Transports. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 The HTTPS Wrapper. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 The FTP and FTPS Wrappers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 Secure IMAP and POP Support Using TLS Transport . . . . . . . . . . . 137 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 ■ CHAPTER 8 Securing Network Connections II: SSH . . . . . . . . . . . . . . . . . . 139 Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 The Original Secure Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 Secure Shell Protocol Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 Secure Shell Authentication with Pluggable Authentication Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 Using OpenSSH for Secure Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 Installation and Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 SSH Port Forwarding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 Using SSH with Your PHP Applications. . . . . . . . . . . . . . . . . . . . . . . 161 The Value of Secure Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 Should I Use SSL or SSH? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 ■ CHAPTER 9 Controlling Access I: Authentication . . . . . . . . . . . . . . . . . . . . 175 Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 HTTP Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 HTTP Basic Authentication. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 HTTP Digest Authentication. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 Two-factor Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 Certificate-based Authentication Using HTTPS. . . . . . . . . . . . . . . . 187 Using One-Time Keys for Authentication. . . . . . . . . . . . . . . . . . . . . 194 Single Sign-On Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 Kerberos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 Building Your Own Single Sign-On System . . . . . . . . . . . . . . . . . . . 195 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 SnyderSouthwell_5084Front.fm Page ix Thursday, July 28, 2005 4:00 PM ■ CONTENTS ix ■ CHAPTER 10 Controlling Access II: Permissions and Restrictions . . . 209 Unix Filesystem Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 An Introduction to Unix Permissions. . . . . . . . . . . . . . . . . . . . . . . . . 209 Manipulating Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 Shared Group Directories. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 PHP Tools for Working with File Access Controls. . . . . . . . . . . . . . 215 Keeping Developers (and Daemons) in Their Home Directories . . 215 Protecting the System from Itself . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 Resource Limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 Disk Quotas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 PHP’s Own Resource Limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 Protecting Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 Database Filesystem Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . 219 Controlling Database Access: Grant Tables. . . . . . . . . . . . . . . . . . . 219 Hardening a Default MySQL Installation. . . . . . . . . . . . . . . . . . . . . . 220 Grant Privileges Conservatively. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 Avoid Unsafe Networking. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 REALLY Adding Undo with Regular Backups. . . . . . . . . . . . . . . . . . 222 PHP Safe Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 How Safe Mode Works. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 Other Safe Mode Features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 Safe Mode Alternatives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 PART 3 Practicing Secure ■ ■ ■ PHP Programming ■ CHAPTER 11 Validating User Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 What to Look For . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 Input Containing Metacharacters . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 Wrong Type of Input. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 Too Much Input. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 Abuse of Hidden Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 Input Bearing Unexpected Commands. . . . . . . . . . . . . . . . . . . . . . . 232

Description:
Pro PHP Security. □□□. Chris Snyder and Michael Southwell. SnyderSouthwell_5084Front.fm Page i Thursday, July 28, 2005 4:00 PM
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.