
이 기사가지고 있다고 말한다opcache_get_status()
활성화하면 보안 위험이 있습니다. 끄려면 구성해야 하는데 opcache.restrict_api
방법에 대한 예를 찾을 수 없습니다.
이 사람로 구성했을 때 제한이 적용되었는데 opcache.restrict_api=/restricted
, 이는 경로여야 한다는 단서를 제공합니다.
호출을 통해 테스트 스크립트를 작성하는 것으로 시작했고 opcache_get_status()
해당 시스템에서 많은 PHP 스크립트의 출력을 얻었으며 제한이 없음을 확인했습니다. 그런 다음 my 를 /etc/php/7.3/fpm/php.ini
have 로 편집했고 opcache.restrict_api=/dev/null
이제 동일한 호출이 반환됩니다 bool(false)
. 제한이 활성화된 것으로 간주됩니다.
내 목표 opcache_get_status()
는 등을 완전히 금지하는 것입니다. 그리고 아래의 스크립트를 '허용'하면 /dev/null
해당 파일을 사용할 수 없기 때문에 본질적으로 사용이 불가능해집니다.
- 이 논리가 맞나요?
- 다른 경로를 사용해야 할까요?
- 가짜 경로를 사용하지 않고 직접 제한을 활성화할 수 있는 방법이 있습니까?
감사합니다
답변1
소스코드를 살펴보면ext/opcache/zend_accelerator_module.c
- 정보가 '유출'되기 위해서는
validate_api_restriction()
반환해야합니다true
. - ~ 안에그 기능 자체가, 그것은
SG(request_info).path_translated
(분명히,같음SCRIPT_FILENAME
) 그리고일치한다restrict_api
, 비교처음 몇 글자두 값 중. path_translated
aka 의 첫 번째 문자SCRIPT_FILENAME
는 슬래시이므로opcache.restrict_api=1
일치하지 않으므로(/
!=1
) 사용하기에 안전해 보입니다.
또한여기 다른 사람이 사용하고 있어opcache.restrict_api=1
도.
어딘가에 틀렸다면 정정해주세요! 그때까지는 이것이 내 질문에 거의 답이 된 것 같습니다.