Самоучитель: PHP 8.5: инженерный практикум
Глава 21 из 22VI. Качество и выпуск125 минут

Глава 21. Угрозы, производительность и наблюдаемое поведение

Безопасность определяет, что не должно произойти; наблюдаемость показывает, что происходит; производительность улучшается после измерения конкретного узкого места.

После главы вы сможете
  • нарисовать границы доверия
  • выбрать сигнал качества
  • профилировать до оптимизации

Модель угроз начинается с активов

Дневник содержит личные данные, session id, хеши паролей и историю изменений. Для каждого потока отметьте источник, границу доверия, допустимую операцию и последствия подмены, раскрытия или отказа.

Checklist не заменяет модель: prepared statement закрывает SQL-значение, но не проверяет право читать workout_id. Контекстное экранирование защищает вывод, но не ограничивает размер загружаемого файла.

Сигналы одного запроса

От запроса к сигналуСтруктурное событие объясняет конкретный отказ, метрика показывает частоту и тенденцию.RequestcorrelationTimerdurationQuerycount/timeResultstatusMetricaggregate
Структурное событие объясняет конкретный отказ, метрика показывает частоту и тенденцию.

Лимит — часть безопасности

Ограничьте размер тела, число полей, длину строки, число строк импорта, page size, время выполнения и объём вывода. Без лимита корректный синтаксис может стать отказом в обслуживании.

Rate limit применяется к дорогому или чувствительному действию и возвращает наблюдаемый 429. Ключ только по IP несправедлив для общей сети; ключ только по user id не помогает до входа. Обычно комбинируются несколько сигналов.

Профиль раньше cache

Сначала измерьте latency по этапам, число SQL-запросов, планы EXPLAIN, память и размер ответа. N+1 исправляется запросом или проекцией, а не общим кешем, скрывающим проблему.

OPcache компилирует PHP-код и требует согласованной стратегии публикации. Кеш предметных данных получает ключ, TTL, правило инвалидирования и поведение при промахе. Если эти четыре пункта неизвестны, кеш создаст устаревшие ответы.

SLO связывает технику и пользователя

Например, 99% чтений недельного журнала завершаются успешно быстрее выбранного порога. SLI измеряет статус и latency, SLO задаёт цель, error budget помогает решать, когда приоритетом становится надёжность.

Не собирайте метрики с бесконтрольной кардинальностью: raw URL с id пользователя взорвёт число временных рядов. Используйте имя маршрута и ограниченный набор label.

Лабораторная работа

Постройте threat model публикации и импорта CSV. Затем задайте три метрики, один SLO и эксперимент производительности, который отличает SQL-задержку от рендеринга Twig.

Локальный прогресс

Закрепите материал

Отметка, заметка, чек-лист и ответы остаются в localStorage этого браузера и не отправляются в аналитику.

Перелинковка со справочником

Проверка актуальности

  • cheatsheetseries.owasp.orghttps://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.htmlПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
  • cheatsheetseries.owasp.orghttps://cheatsheetseries.owasp.org/cheatsheets/Session_Management_Cheat_Sheet.htmlПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
  • cheatsheetseries.owasp.orghttps://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.htmlПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
  • cheatsheetseries.owasp.orghttps://cheatsheetseries.owasp.org/cheatsheets/Logging_Cheat_Sheet.htmlПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.

Текст и схемы созданы для этого самоучителя без воспроизведения страниц, иллюстраций и листингов приложенной книги. Проверено: .

Данные этого сервиса

Настройки cookie и локальных данных

Аналитика

Текущий статус: не выбран. До согласия обе аналитические системы не загружаются.

Локальные данные

Удаление затрагивает только ключи PHP-сервиса в этом браузере и требует подтверждения.

Политики

Политика конфиденциальности · Политика использования файлов cookie