В этой статье говорится, что включение opcache_get_status ()
представляет собой угрозу безопасности. Чтобы отключить его, нужно настроить opcache.restrict_api
, но я не смог найти примера, как это сделать.
Этот человек имел ограничение при настройке как opcache.restrict_api = / limited
, что дает мне понять, что это должен быть путь.
Я начал с создания тестового сценария с вызовом opcache_get_status ()
и получил на выходе множество сценариев PHP для этой системы, подтверждающих отсутствие ограничений. Затем я отредактировал свой /etc/php/7.3/fpm/php.ini
так, чтобы он имел opcache.restrict_api = / dev / null
, и тот же вызов теперь возвращает bool ( false)
- Я так понимаю ограничение включено.
Моя цель - полностью запретить opcache_get_status ()
и тому подобное, и, «разрешая» скрипты в / dev / null
, я по сути делаю невозможным использование, так как вы не можете там файл.
Спасибо
Глядя на исходный код ext / opcache / zend_accelerator_module.c
validate_api_restriction ()
должен вернуть верно
. SG (request_info) .path_translated
(что, по-видимому, равно SCRIPT_FILENAME
) и сопоставляет его с restrict_api
, сравнивая первые несколько символов из двух значений. path_translated
aka SCRIPT_FILENAME
является косой чертой, opcache.restrict_api = 1
не будет соответствовать ему ( /
]! = 1
), и поэтому выглядит безопасным для использования Также здесь кто-то еще использует opcache.restrict_api = 1
.
Пожалуйста, поправьте меня, если я где-то ошибаюсь! А пока я чувствую, что это в значительной степени отвечает на мой вопрос.