
Este artigodiz que tendoopcache_get_status()
ativado é um risco à segurança. Para desligá-lo é preciso configurar o opcache.restrict_api
, mas não consegui encontrar um exemplo de como.
Esta pessoateve a restrição em vigor quando configurada como opcache.restrict_api=/restricted
, o que me dá uma pista de que precisa ser um caminho.
Comecei criando um script de teste com uma opcache_get_status()
chamada e obtive uma saída de vários scripts PHP naquele sistema, confirmando que não havia restrição. Então editei meu /etc/php/7.3/fpm/php.ini
to have opcache.restrict_api=/dev/null
e essa mesma chamada agora retorna bool(false)
- presumo que a restrição esteja habilitada.
Meu objetivo é proibir opcache_get_status()
completamente e similares, e ao 'permitir' scripts em /dev/null
, estou essencialmente tornando impossível o uso, já que você não pode um arquivo lá.
- Essa lógica está correta?
- Devo talvez usar algum outro caminho?
- Existe uma maneira de ativar a restrição diretamente, sem mexer com caminhos falsos?
Obrigado
Responder1
Olhando para o código fonte doext/opcache/zend_accelerator_module.c
- Para que a informação 'vaze',
validate_api_restriction()
precisa retornartrue
. - Emessa função em si, é preciso
SG(request_info).path_translated
(o que, aparentemente,igual aSCRIPT_FILENAME
) ecombina comrestrict_api
, comparandoprimeiros personagensdos dois valores. - Como o primeiro caractere de
path_translated
akaSCRIPT_FILENAME
é uma barra,opcache.restrict_api=1
não corresponde a ela (/
!=1
) e, portanto, parece seguro de usar
Tambémaqui está outra pessoa usandoopcache.restrict_api=1
também.
Por favor, corrija-me se eu estiver errado em algum lugar! Até então, sinto que isso praticamente responde à minha pergunta.