2011-10-25 106 views
3

安全模式已棄用爲5.3.0。我從來沒有真正需要它,而是由於權限錯誤等發現過去許多次有問題。PHP安全模式替代

但是我現在有一個要求,我認爲安全模式會做得很好。

我已經構建了一個可通過模塊擴展的Web應用程序。我計劃自己託管系統,允許付費客戶通過實施和編寫掛接到系統各個部分的模塊來擴展他們的軟件。

我擔心的是,通過這樣做,我無法確保他們上傳的代碼沒有掃描我花了幾年時間設計和測試的基礎/框架。保持代碼的專有性對我來說很有意思。

  1. 我寫了一個模塊分析工具,以確保沒有非法方法在第三方模塊中被調用 - 不容易!

  2. 我禁用php.ini級別的有害函數,但是這包括fopen()和它是類似的 - 這意味着框架將無法調用它自己的include()操作等。

  3. 最後可悲的是過時的,安全模式,從能夠讀取不共享相同的ID,組文件限制用戶模塊等

什麼是推薦的方法,以這樣的事?在我的框架環境中執行之前沒有手動審查或自動分析每個模塊?

+1

建議的方法是使用許可協議,可以讓你在折磨違反死刑,溼他們應該嘗試對你的系統進行逆向工程。從長遠來看,其他任何東西都是徒勞的。 –

+0

馬克B的建議是一個很好的建議。你讓代碼在你的代碼之上進行編碼......沒有辦法隱藏任何東西,可以直接訪問。也許你可以考慮用RESTful API或其他方法來製作Web服務? – Brad

回答

0

safe_mode正在被刪除的好東西。它是一種錯誤的安全感,並且有許多方法可以繞過它。

更好的方法是使用suphp作爲監禁用戶運行您的應用程序。這使用操作系統的安全性來保護您的應用程序。而不是禁止exec()system(),您將您的php代碼作爲無權訪問shell的帳戶運行。而不是禁止fopen()您從該用戶擁有的所有內容中刪除寫入權限chmod 500 -R /。或者更進一步,在chroot中運行你的應用程序。

0

而不是安全模式,您可以使用php-fpm與chroot,每個用戶在mod_ruid和php-fpm中的權限,以及在php中的opendir限制。這樣,您可以使安全模式變得更加嚴格。個人而言,我會推薦使用chroot和禁用系統函數(如exec和system)的php-fpm。無論如何這些都是邪惡的。

0

/etc/php/7.0/fpm/php.ini繞過安全模式下使用的open_basedir