Php-Fpm
出於安全原因啟用 opcache.restrict_api
本文說
opcache_get_status()
啟用是一種安全風險。要關閉它,必須配置opcache.restrict_api
,但我找不到如何操作的範例。此人在配置為 時具有有效的限制
opcache.restrict_api=/restricted
,這給了我一個線索,即它需要成為一條路徑。我首先通過呼叫創建了一個測試腳本
opcache_get_status()
,我在該系統上得到了許多 PHP 腳本的輸出,確認沒有任何限制。然後我將我的編輯/etc/php/7.3/fpm/php.ini
為 haveopcache.restrict_api=/dev/null
,現在返回相同bool(false)
的呼叫 - 我認為限制已啟用。我的目標是完全禁止
opcache_get_status()
之類的,並且通過“允許”下的腳本/dev/null
,我基本上使它無法使用,因為你不能在那裡有文件。
- 這個邏輯正確嗎?
- 我應該使用其他路徑嗎?
- 有沒有辦法直接啟用限制,而不用弄亂假路徑?
謝謝
看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
也在使用。如果我在某個地方錯了,請糾正我!在那之前,我覺得這幾乎可以回答我的問題。