Table of contents : Предисловие к пятому изданию Предисловие Об авторе Благодарности Глава 1. Введение в РНР 1.1. Что такое РНР? 1.2. Создание сайта для Apache 1.3. Как работает РНР? 1.4. Чего ждать дальше? Глава 2. Основы РНР 2.1. РНР-инструкции 2.2. Подключение файлов 2.3. Вывод данных 2.4. Правила кодирования 2.4.1. Комментарии 2.4.2. Чувствительность 2.4.3. Переменные 2.4.4. Основные операции 2.4.5. Область видимости 2.4.6. Константы 2.5. Управление выполнением программы 2.6. Циклы 2.6.1. Цикл for 2.6.2. Цикл while 2.6.3. Бесконечные циклы 2.6.4. Управление циклами 2.7. Прерывание работы программы 2.8. Функции 2.9. Классы 2.10. Массивы 2.11. Обработка ошибок 2.12. Передача данных 2.12.1. Переменные окружения 2.12.2. Передача параметров 2.12.3. Метод GET 2.12.4. Метод POST 2.12.5. Скрытые параметры 2.13. Хранение параметров посетителя 2.13.1. Сеансы 2.13.2. Cookies 2.13.3. Безопасность cookie 2.14. Файлы 2.14.1. Открытие файла 2.14.2. Закрытие файла 2.14.3. Чтение данных 2.14.4. Дополнительные функции чтения 2.14.5. Запись данных 2.14.6. Позиционирование в файле 2.14.7. Свойства файлов Глава 3. Безопасность 3.1. Комплексная защита 3.2. Права доступа 3.3. Как взламывают сценарии? 3.4. Основы защиты сценариев 3.4.1. Реальный пример ошибки 3.4.2. Рекомендации по защите 3.4.3. Тюнинг РНР 3.5. Проверка корректности данных 3.6. Регулярные выражения 3.6.1. Функции регулярных выражений РНР Функция ereg() Функция eregif) Функция ereg_replace() Функция eregi_replace() Функция split() Функция splitiQ 3.6.2. Использование регулярных выражений РНР 3.6.3. Использование регулярных выражений Perl 3.6.4. Функции регулярных выражений Perl Функция preg_match() Функция preg_match_all() Функция preg_split() 3.6.5. Проверка e-mail 3.6.6. Советы по использованию регулярных выражений 3.7. Что и как фильтровать? 3.8. Базы данных 3.8.1. Основы баз данных 3.8.2. Атака SQL Injection 3.8.3. Реальное экранирование 3.8.4. Параметризированные запросы 3.8.5. Работа с файлами 3.8.6. Практика работы с базами данных 3.8.7. Проверка URL 3.9. Работа с файлами 3.10. Криптография 3.10.1. Симметричное шифрование 3.10.2. Асимметричное шифрование 3.10.3. Необратимое шифрование 3.10.4. Практика использования шифрования 3.11. Атака Cross-Site Scripting 3.12. Флуд 3.12.1. Защита от флуда сообщениями 3.12.2. Защита от накрутки голосований 3.13. Изменения формы и атака CSRF 3.14. Сопровождение журнала 3.15. Защита от неправомерных изменений 3.16. Панель администратора 3.17. Опасная переменная SREQUEST UR1 3.18. CAPTCHA 3.19. Сериализация Глава 4. Оптимизация 4.1. Алгоритм 4.2. Слабые места 4.3. Базы данных 4.3.1. Оптимизация запросов 4.3.2. Оптимизация СУБД 4.3.3. Выборка необходимых данных 4.3.4. Изучайте систему 4.4. Оптимизация РНР 4.4.1. Кеширование вывода 4.4.2. Кеширование страниц 4.5. Оптимизация или безопасность? 4.6. Переход на РНР 8 Глава 5. Примеры работы с РНР 5.1. Загрузка файлов на сервер 5.2. Проверка корректности файла 5.3. Запретная зона 5.3.1. Аутентификация 5.3.2. Защита сценариев правами доступа сервера Apache 5.4. Работа с сетью 5.4.1. Работа с DNS 5.4.2. Протоколы 5.4.3. Сокеты Инициализация Серверные функции Клиентские функции Обмен данными Управление сокетами 5.5. Сканер портов 5.6. FTP-клиент низкого уровня 5.7. Работа с электронной почтой 5.7.1. Протокол SMTP 5.7.2. Функция mail() 5.7.3. Соединение с SMTP-сервером 5.7.4. Безопасность электронной почтовой службы 5.7.5. Производительность отправки почты 5.8. Защита ссылок 5.9. РНР в руках хакера 5.10. Уловки 5.10.1. Переадресация 5.10.2. Всплывающие окна 5.10.3. Тег 5.10.4. Стой, не уходи! 5.11. Как убрать теги? Глава 6. Фреймворки РНР 6.1. Знакомство с Laravel 6.2. Быстрый старт 6.3. Уязвимость CSRF 6.4. Базы данных 6.4.1. Добавление данных 6.4.2. Чтение данных 6.4.3. Флуд при добавлении данных 6.4.4. Работа с базами данных в Symfony 6.5. Фреймворки и защита от XSS 6.5.1. XSS в Symfony Литература Описание файлового архива, сопровождающего книгу Предметный указатель