Предисловие к четвертому изданию 7
Предисловие 9
Об авторе 10
Благодарности 11
Глава 1. Введение в PHP
13
1.1. Что такое PHP? 13
1.2. Создание сайта для Apache 14
1.3. Как работает PHP? 16
Глава 2. Основы PHP
19
2.1. PHP-инструкции 19
2.2. Подключение файлов 24
2.3. Вывод данных 28
2.4. Правила кодирования 29
2.4.1. Комментарии 29
2.4.2. Чувствительность 31
2.4.3. Переменные 33
2.4.4. Основные операции 36
2.4.5. Область видимости 37
2.4.6. Константы 38
2.5. Управление выполнением программы 39
2.6. Циклы 49
2.6.1. Цикл for 49
2.6.2. Цикл while 51
2.6.3. Бесконечные циклы 52
2.6.4. Управление циклами 52
2.7. Прерывание работы программы 54
2.8. Функции 55
2.9. Классы 59
2.10. Массивы 62
2.11. Обработка ошибок 64
2.12. Передача данных 66
2.12.1. Переменные окружения 66
2.12.2. Передача параметров 67
2.12.3. Метод GET 71
2.12.4. Метод POST 73
2.12.5. Скрытые параметры 76
2.13. Хранение параметров пользователя 77
2.13.1. Сеансы 79
2.13.2. Cookies 82
2.13.3. Безопасность cookie 87
2.14. Файлы 88
2.14.1. Открытие файла 89
2.14.2. Закрытие файла 90
2.14.3. Чтение данных 91
2.14.4. Дополнительные функции чтения 93
2.14.5. Запись данных 94
2.14.6. Позиционирование в файле 95
2.14.7. Свойства файлов 96
Глава 3. Безопасность
99
3.1. Комплексная защита 100
3.2. Права доступа 101
3.3. Как взламывают сценарии? 102
3.4. Основы защиты сценариев 105
3.4.1. Реальный пример ошибки 105
3.4.2. Рекомендации по защите 109
3.4.3. Тюнинг PHP 110
Защищенный режим 110
Запреты 111
3.5. Проверка корректности данных 112
3.6. Регулярные выражения 117
3.6.1. Функции регулярных выражений PHP 117
Функция ereg() 117
Функция eregi() 118
Функция ereg_replace() 118
Функция eregi_replace() 118
Функция split() 118
Функция spliti() 119
3.6.2. Использование регулярных выражений PHP 119
3.6.3. Использование регулярных выражений Perl 124
3.6.4. Функции регулярных выражений Perl 126
Функция preg_match() 126
Функция preg_match_all() 127
Функция preg_split() 127
3.6.5. Проверка e-mail 128
3.6.6. Советы по использованию регулярных выражений 128
3.7. Что и как фильтровать? 128
3.8. Базы данных 132
3.8.1. Основы баз данных 133
3.8.2. Атака SQL Injection 136
3.8.3. Реальное экранирование 146
3.8.4. Параметризированные запросы 146
3.8.5. Работа с файлами 151
3.8.6. Практика работы с базами данных 151
3.8.7. Проверка URL 152
3.9. Работа с файлами 153
3.10. Криптография 154
3.10.1. Симметричное шифрование 155
3.10.2. Асимметричное шифрование 156
3.10.3. Необратимое шифрование 157
3.10.4. Практика использования шифрования 157
3.11. Атака Cross-Site Scripting 164
3.12. Флуд 165
3.12.1. Защита от флуда сообщениями 166
3.12.2. Защита от накрутки голосований 166
3.13. Защита от изменения формы 168
3.14. Сопровождение журнала 171
3.15. Защита от неправомерных изменений 172
3.16. Панель администратора 173
3.17. Опасная переменная $REQUEST_URI 175
3.18. CAPTCHA 175
3.19. Сериализация 181
Глава 4. Оптимизация
183
4.1. Алгоритм 183
4.2. Слабые места 185
4.3. Базы данных 186
4.3.1. Оптимизация запросов 187
4.3.2. Оптимизация СУБД 191
4.3.3. Выборка необходимых данных 193
4.3.4. Изучайте систему 195
4.4. Оптимизация PHP 197
4.4.1. Кэширование вывода 197
4.4.2. Кэширование страниц 198
4.5. Оптимизация или безопасность? 200
Глава 5. Примеры работы с PHP
203
5.1. Загрузка файлов на сервер 203
5.2. Проверка корректности файла 208
5.3. Запретная зона 211
5.3.1. Аутентификация 211
5.3.2. Защита сценариев правами доступа сервера Apache 218
5.4. Работа с сетью 219
5.4.1. Работа с DNS 220
5.4.2. Протоколы 220
5.4.3. Сокеты 221
Инициализация 222
Серверные функции 222
Клиентские функции 223
Обмен данными 224
Управление сокетами 225
5.5. Сканер портов 226
5.6. FTP-клиент низкого уровня 229
5.7. Работа с электронной почтой 232
5.7.1. Протокол SMTP 232
5.7.2. Функция mail() 234
5.7.3. Соединение с SMTP-сервером 236
5.7.4. Безопасность электронной почтовой службы 237
5.7.5. Производительность отправки почты 237
5.8. Защита ссылок 239
5.9. PHP в руках хакера 240
5.10. Уловки 241
5.10.1. Переадресация 242
5.10.2. Всплывающие окна 243
5.10.3. Тег 245
5.10.4. Стой, не уходи! 246
5.11. Как убрать теги 247

Литература 249
Приложение. Описание электронного архива, сопровождающего книгу 251
Предметный указатель 253