2012-11-02 32 views
1

我打算允許某些(註冊的&審查)用戶發佈php代碼和/或上傳一個我將在沙盒環境中執行的php文件。我如何只允許執行指定的功能並禁用所有其他功能?

我知道這聽起來不好主意多少,我可以打開可能的安全漏洞。

我也會做一些事情,比如設置嚴格的執行時間,每天最多運行一次腳本,以非特權方式運行web服務器用戶等等。

我知道我可以不允許在php.ini中使用某些函數,但是我想知道是否可以禁用所有函數(而不是將每個函數都放在php.ini中),但允許使用某些函數我已經審覈並認爲可以安全的功能?

+0

您可以使用get_defined_functions()並在禁用列表之前刪除您希望它們使用的那些。 – Waygood

回答

2

最好的選擇是使用Suhosin擴展名,它允許你白名單你想允許的功能。

請參閱Suhosin的suhosin.executor.func.whitelist配置選項。

suhosin.executor.func.whitelist

逗號分隔的被允許被調用的函數的白名單。 如果白名單爲空,則評估黑名單,否則調用不在白名單中的功能的 將終止腳本並且 被記錄。

+0

正是我在找的,謝謝 – MacroMan