
Este artículodice que teneropcache_get_status()
habilitado es un riesgo de seguridad. Para desactivarlo, hay que configurarlo opcache.restrict_api
, pero no pude encontrar un ejemplo de cómo.
Ésta personatenía la restricción vigente cuando se configuró como opcache.restrict_api=/restricted
, lo que me da una pista de que debe ser una ruta.
Comencé creando un script de prueba con una opcache_get_status()
llamada y obtuve un resultado de muchos scripts PHP en ese sistema, lo que confirmó que no había ninguna restricción. Luego edité mi /etc/php/7.3/fpm/php.ini
to have opcache.restrict_api=/dev/null
y ahora vuelve la misma llamada bool(false)
; supongo que la restricción está habilitada.
Mi objetivo es prohibir opcache_get_status()
completamente cosas similares, y al "permitir" scripts en /dev/null
, básicamente hago que sea imposible su uso, ya que no se puede almacenar un archivo allí.
- ¿Es correcta esta lógica?
- ¿Quizás debería usar algún otro camino?
- ¿Hay alguna manera de habilitar la restricción directamente, sin perder el tiempo con rutas falsas?
Gracias
Respuesta1
Mirando el código fuente deext/opcache/zend_accelerator_module.c
- Para que la información se 'filtre',
validate_api_restriction()
necesita regresartrue
. - Enesa función en sí, se necesita
SG(request_info).path_translated
(que, aparentemente,igual aSCRIPT_FILENAME
) ylo compara conrestrict_api
, comparandoprimeros personajesde los dos valores. - Dado que el primer carácter de
path_translated
akaSCRIPT_FILENAME
es una barra diagonal,opcache.restrict_api=1
no coincidirá con él (/
!=1
) y, por lo tanto, parece seguro de usar.
Tambiénaquí hay alguien más usandoopcache.restrict_api=1
también.
¡Corrígeme si me equivoco en alguna parte! Hasta entonces, siento que esto responde en gran medida a mi pregunta.