1. Trang chủ
  2. » Công Nghệ Thông Tin

Secure PHP Development- P133 potx

5 167 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Cấu trúc

  • Secure PHP Development

    • Front Matter

      • Preface

        • Is This Book for You?

        • How This Book Is Organized

        • Tell Us What You Think

      • Acknowledgments

      • Contents at a Glance

      • Contents

    • Part I

      • Chapter 1: Features of Practical PHP Applications

        • Features of a Practical PHP Application

        • Employing the Features in Applications

        • Summary

      • Chapter 2: Understanding and Avoiding Security Risks

        • Identifying the Sources of Risk

        • Minimizing User-Input Risks

        • Not Revealing Sensitive Information

        • Summary

      • Chapter 3: PHP Best Practices

        • Best Practices for Naming Variables and Functions

        • Best Practices for Function/Method

        • Best Practices for Database

        • Best Practices for User Interface

        • Best Practices for Documentation

        • Best Practices for Web Security

        • Best Practices for Source Configuration Management

        • Summary

    • Part II

      • Chapter 4: Architecture of an Intranet Application

        • Understanding Intranet Requirements

        • Building an Intranet Application Framework

        • Creating a Database Abstraction Class

        • Creating an Error Handler Class

        • Creating a Built-In Debugger Class

        • Creating an Abstract Application Class

        • Creating a Sample Application

        • Summary

      • Chapter 5: Central Authentication System

        • How the System Works

        • Creating an Authentication Class

        • Creating the Central Login Application

        • Creating the Central Logout Application

        • Creating the Central Authentication Database

        • Testing Central Login and Logout

        • Making Persistent Logins in Web Server Farms

        • Summary

      • Chapter 6: Central User Management System

        • Identifying the Functionality Requirements

        • Creating a User Class

        • User Interface Templates

        • Creating a User Administration Application

        • Creating a User Password Application

        • Creating a Forgotten-Password Recovery Application

        • Summary

      • Chapter 7: Intranet System

        • Identifying Functionality Requirements

        • Designing the Database

        • Designing and Implementing the Intranet Classes

        • Setting Up Application Configuration Files

        • Setting Up the Application Templates

        • Intranet Home Application

        • Installing Intranet Applications from the CD- ROM

        • Testing the Intranet Home Application

        • Summary

      • Chapter 8: Intranet Simple Document Publisher

        • Identifying the Functionality Requirements

        • The Prerequisites

        • Designing the Database

        • The Intranet Document Application Classes

        • Setting up Application Configuration Files

        • Setting Up the Application Templates

        • The Document Publisher Application

        • Installing Intranet Document Application

        • Testing Intranet Document Application

        • Summary

      • Chapter 9: Intranet Contact Manager

        • Functionality Requirements

        • Understanding Prerequisites

        • The Database

        • The Intranet Contact Manager Application Classes

        • The Application Configuration Files

        • The Application Templates

        • The Contact Category Manager Application

        • The Contact Manager Application

        • Installing Intranet Contract Manager

        • Testing Contract Manager

        • Summary

      • Chapter 10: Intranet Calendar Manager

        • Identifying Functionality Requirements

        • Understanding Prerequisites

        • Designing the Database

        • The Intranet Calendar Application Event Class

        • The Application Configuration Files

        • The Application Templates

        • The Calendar Manager Application

        • The Calendar Event Manager Application

        • Installing the Event Calendar on Your Intranet

        • Testing the Event Calendar

        • Summary

      • Chapter 11: Internet Resource Manager

        • Functionality Requirements

        • Understanding the Prerequisites

        • Designing the Database

        • Designing and Implementing the Internet Resource Manager Application Classes

        • Creating Application Configuration Files

        • Creating Application Templates

        • Creating a Category Manager Application

        • Creating a Resource Manager Application

        • Creating a Resource Tracking Application

        • Creating a Search Manager Application

        • Installing an IRM on Your Intranet

        • Testing IRM

        • Security Concerns

        • Summary

      • Chapter 12: Online Help System

        • Functionality Requirements

        • Understanding the Prerequisites

        • Designing and Implementing the Help Application Classes

        • Creating Application Configuration Files

        • Creating Application Templates

        • Creating the Help Indexing Application

        • Creating the Help Application

        • Installing Help Applications

        • Testing the Help System

        • Security Considerations

        • Summary

    • Part III

      • Chapter 13: Tell-a-Friend System

        • Functionality Requirements

        • Understanding Prerequisites

        • Designing the Database

        • Designing and Implementing the Tell- a- Friend Application Classes

        • Creating Application Configuration Files

        • Creating Application Templates

        • Creating the Tell-a-Friend Main Menu Manager Application

        • Creating a Tell-a-Friend Form Manager Application

        • Creating a Tell-a-Friend Message Manager Application

        • Creating a Tell-a-Friend Form Processor Application

        • Creating a Tell-a-Friend Subscriber Application

        • Creating a Tell-a-Friend Reporter Application

        • Installing a Tell-a-Friend System

        • Testing the Tell-a-Friend System

        • Security Considerations

        • Summary

      • Chapter 14: E-mail Survey System

        • Functionality Requirements

        • Architecture of the Survey System

        • Designing the Database

        • Designing and Implementing the Survey Classes

        • Designing and Implementing the Survey Applications

        • Developing Survey Execution Manager

        • Setting Up the Central Survey Configuration File

        • Setting Up the Interface Template Files

        • Testing the Survey System

        • Security Considerations

        • Summary

      • Chapter 15: E-campaign System

        • Features of an E-campaign System

        • Architecting an E-campaign System

        • Designing an E-campaign Database

        • Understanding Customer Database Requirements

        • Designing E-campaign Classes

        • Creating Common Configuration and Resource Files

        • Creating Interface Template Files

        • Creating an E-campaign User Interface Application

        • Creating a List Manager Application

        • Creating a URL Manager Application

        • Creating a Message Manager Application

        • Creating a Campaign Manager Application

        • Creating a Campaign Execution Application

        • Creating a URL Tracking and Redirection Application

        • Creating an Unsubscription Tracking Application

        • Creating a Campaign Reporting Application

        • Testing the E-Campaign System

        • Security Considerations

        • Summary

    • Part IV

      • Chapter 16: Command-Line PHP Utilities

        • Working with the Command-Line Interpreter

        • Building a Simple Reminder Tool

        • Building a Geo Location Finder Tool for IP

        • Building a Hard Disk Usage Monitoring Utility

        • Building a CPU Load Monitoring Utility

        • Summary

      • Chapter 17: Apache Virtual Host Maker

        • Understanding an Apache Virtual Host

        • Defining Configuration Tasks

        • Creating a Configuration Script

        • Developing makesite

        • Installing makesite on Your System

        • Testing makesite

        • Summary

      • Chapter 18: BIND Domain Manager

        • Features of makezone

        • Creating the Configuration File

        • Understanding makezone

        • Installing makezone

        • Testing makezone

        • Summary

    • Part V

      • Chapter 19: Web Forms Manager

        • Functionality Requirements

        • Understanding Prerequisites

        • Designing the Database

        • Designing and Implementing the Web Forms Manager Application Classes

        • Creating the Application Configuration Files

        • Creating Application Templates

        • Creating the Web Forms Submission Manager Application

        • Creating the Web Forms Reporter Application

        • Creating the CSV Data Exporter Application

        • Installing the Web Forms Manager

        • Testing the Web Forms Manager

        • Security Considerations

        • Summary

      • Chapter 20: Web Site Tools

        • Functionality Requirements

        • Understanding Prerequisites

        • Designing the Database

        • Designing and Implementing the Voting Tool Application Class

        • Creating the Application Configuration Files

        • Creating the Application Templates

        • Creating the Vote Application

        • Installing the Voting Tool

        • Testing the Voting Tool

        • Summary

    • Part VI

      • Chapter 21: Speeding Up PHP Applications

        • Benchmarking Your PHP Application

        • Buffering Your PHP Application Output

        • Compressing Your PHP Application Output

        • Caching Your PHP Applications

        • Summary

      • Chapter 22: Securing PHP Applications

        • Controlling Access to Your PHP Applications

        • Securely Uploading Files

        • Using Safe Database Access

        • Recommended php.ini Settings for a Production Environment

        • Limiting File System Access for PHP Scripts

        • Running PHP Applications in Safe Mode

        • Summary

    • Part VII

      • Appendix A: What's on the CD-ROM

        • System Requirements

        • What's on the CD

        • Troubleshooting

      • Appendix B: PHP Primer

        • Object-Oriented PHP

      • Appendix C: MySQL Primer

        • Using MySQL from the Command- Line

        • Using phpMyAdmin to Manage MySQL Database

      • Appendix D: Linux Primer

        • Installing and Configuring Apache 2.0

        • Installing and Configuring MySQL Server

        • Installing and Configuring PHP for Apache 2.0

        • Common File/Directory Commands

        • Index

        • Wiley Publishing, Inc. End-User License Agreement

Nội dung

// Copy in to SITE_INFO $GLOBALS[SITE_INFO][user] = $request[user]; $GLOBALS[SITE_INFO][group] = $request[group]; $GLOBALS[SITE_INFO][vhost] = $request[vhost]; // Check to see if given vhost is a hostname if (!checkVhostName($request[vhost])) { echo “Error: virtual hostname $request[vhost] is not valid.\n”; return null; } if (empty($request[group])) { $request[group] = $request[user]; } return $request; } function getValue($cmd = null, $short, $long) { return (isset($cmd[$short])) ? $cmd[$short] : $cmd[$long]; } function syntax() { $script = basename($GLOBALS[‘argv’][0]); echo<<<HELP Syntax $script [options] -h help shows this help -u username user username the name of the user account Continued Chapter 17: Apache Virtual Host Maker 631 22 549669 ch17.qxd 4/4/03 9:27 AM Page 631 Listing 17-5 (Continued) -p password pass password the password for the user account -v hostname vhost hostname the virtual hostname -t account_type type account_type sets type of account -r restart restarts Apache after configuration test OK -t test runs test to access http://hostname HELP; } function getCommandLineOptions($options) { $type = gettype($options); if (gettype($options) != “array”) { // Error in command line echo “$options->message \n”; return null; } $cmd = array(); foreach ($options[0] as $argArray) { $argName = preg_replace(‘/[^\w]/’ , ‘’, $argArray[0]); $argValue = $argArray[1]; if ($argValue[0] == ‘-’) { echo “$argName cannot have $argValue\n”; return array(); } 632 Part IV: Using PHP for Sysadmin Tasks 22 549669 ch17.qxd 4/4/03 9:27 AM Page 632 $cmd[$argName] = ($argValue != ‘’) ? $argValue : TRUE; } return (count($cmd) > 0) ? $cmd : null; } function addContents($site = null, $template = null) { $file = sprintf(“%s/%s”, $GLOBALS[TEMPLATE_DIR], $template); if (!file_exists($file)) { echo “Virtual host content template $file does not exists!\n”; return null; } // Load template require_once($file); $results = copyContentsToSite($site); return $results; } function sendMail($info = null, $request = null, $template = null) { $mailTemplate = sprintf(“%s/%s”, $GLOBALS[TEMPLATE_DIR], $template); echo “Sending mail to $to using $mailTemplate\n”; $to = $request[notify_email]; if (! file_exists($mailTemplate)) { echo “Error: mail template $mailTemplate not found! \n”; return FALSE; } $lines = file($mailTemplate); $contentTypeSet = FALSE; $message = array(); Continued Chapter 17: Apache Virtual Host Maker 633 22 549669 ch17.qxd 4/4/03 9:27 AM Page 633 Listing 17-5 (Continued) $headers = array(); foreach ($lines as $str) { $index++; if (preg_match(‘/From:\s*(.+)/i’, $str, $match)) { array_push($headers, “From: $match[1] \r\n”); } else if (preg_match(‘/Subject:\s*(.+)/i’, $str, $match)) { $subject = $match[1]; } else if (preg_match(‘/^CC:\s*(.+)/i’, $str, $match)) { array_push($headers, “Cc: $match[1] \r\n”); } else if (preg_match(‘/Bcc:\s*(.+)/i’, $str, $match)) { array_push($headers, “Bcc: $match[1] \r\n”); } else if (preg_match(‘/Content-Type:\s*(.+)/i’, $str, $match)) { if (preg_match(‘/html/’, $match[1])) { array_push($headers, “Content-Type: text/html\r\n”); } else { array_push($headers, “Content-Type: text/plain\n”); } $contentTypeSet = TRUE; } else if (preg_match(‘/MIME-Version:\s*(.+)/i’, $str, $match)) { array_push($headers, “MIME-Version: $match[1] \r\n”); } else { array_push($message, $str); } } if (! $contentTypeSet) array_push($headers, “Content-Type: text/plain\r\n”); $body = implode(‘’, $message); 634 Part IV: Using PHP for Sysadmin Tasks 22 549669 ch17.qxd 4/4/03 9:27 AM Page 634 $search = array(); $replace = array(); foreach ($info as $key => $value) { array_push($search, ‘/<%’ . strtoupper($key) . ‘%>/’); array_push($replace, $value); } foreach ($request as $key => $value) { array_push($search, ‘/<%’ . strtoupper($key) . ‘%>/’); array_push($replace, $value); } $body = preg_replace($search, $replace, $body); $subject = preg_replace($search, $replace, $subject); $headerStr = implode(‘’, $headers); mail($to, $subject, $body, $headerStr); return TRUE; } ?> This makesite script builds on the command-line examples discussed throughout this portion of the book. The makesite script uses the two types of command-line arguments, short and long. The short arguments that are allowed are defined in the $CMD_SHORT_OPTIONS string, and the long ones are defined in $CMD_LONG_OPTIONS. These strings are needed for the Console_Getopt::getopt() function, which is available from the Console/Getopt.php class in the PEAR package. The makesite script works as follows: 1. It retrieves all the command-line arguments using the getCommandLine Options() function and stores them in the $cmd array. 2. If –add is included as a command-line argument then the script performs the actual task of adding the new virtual Web site. 3. It calls the makeAddRequest() method to create an array called $request with user-supplied information such as virtual host name (supplied using the vhost host name or the -v hostname), account type (-t account_type or type account_type), username ( user username), password (-p password or pass password), and so on. Chapter 17: Apache Virtual Host Maker 635 22 549669 ch17.qxd 4/4/03 9:27 AM Page 635 . ($argValue[0] == ‘-’) { echo “$argName cannot have $argValue ”; return array(); } 632 Part IV: Using PHP for Sysadmin Tasks 22 549669 ch17.qxd 4/4/03 9:27 AM Page 632 $cmd[$argName] = ($argValue !=. array_push($headers, “Content-Type: text/plain ”); $body = implode(‘’, $message); 634 Part IV: Using PHP for Sysadmin Tasks 22 549669 ch17.qxd 4/4/03 9:27 AM Page 634 $search = array(); $replace =. are needed for the Console_Getopt::getopt() function, which is available from the Console/Getopt .php class in the PEAR package. The makesite script works as follows: 1. It retrieves all the command-line

Ngày đăng: 07/07/2014, 07:20

TỪ KHÓA LIÊN QUAN