国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

如何在框架上做到讓插件運行在沙箱之中,讓插件對硬盤的訪問權(quán)限僅限于它自身的根目錄中?

alafafa

問題描述

怎樣做到讓插件不能訪問插件以外的目錄

假如我安裝了一個插件,這個插件在某個方法里寫上了

$path = './plugin';
$files = scandir($path);
var_dump( $files);

這樣它就能把整個plugin目錄的文件列出來了,除了它自身以外還有別的插件,如我foo插件是zhangsan寫的,bar插件是lisi寫的,該如何做到zhangsan和lisi寫的插件隔離呢,即zhangsan無法去讀取plugin/bar下的內(nèi)容,lisi無法去讀取plugin/foo下的內(nèi)容

1085 4 0
4個回答

北月妖王

做不到,除非你 hook 各種 PHP 的內(nèi)置函數(shù)。不然執(zhí)行一下 shell_exec 或者 exec 函數(shù),只要 webman 的運行用戶有權(quán)限的東西都能獲取到。

  • alafafa 2023-02-28

    所以說webman在框架底層沒有辦法通過技術(shù)手段讓某個插件以安全方式運行嗎?php是可以通過php.ini來配置網(wǎng)站目錄下的php不能訪問網(wǎng)站根目錄以外的內(nèi)容的,webman能做到讓插件不能訪問插件根目錄以外的內(nèi)容嗎?
    目前node沒有做到限制node_modules目錄下的某個包的權(quán)限,但是deno做到了,應(yīng)該不是技術(shù)上做的到做不到而是框架的作者想不想這么做吧?

  • 北月妖王 2023-02-28

    你說的是 php.iniopen_basedir 配置項吧,這個主要是針對當(dāng)前網(wǎng)站整個應(yīng)用的,而你需要的是限制應(yīng)用內(nèi)的某個目錄,這個我認為用啥 PHP 框架都做不到。你可以嘗試設(shè)置一下 open_basedir 看看。

  • nitron 2023-03-01

    技術(shù)上做不到,PHP框架都做不到,open_basedir對CLI模式無效

EchoNoch

如果讓兩個應(yīng)用插件分別以不同的用戶運行,然后在linux系統(tǒng)層限制,可行嗎?

喵了個咪

http://wtbis.cn/doc/webman/others/task.html#%E6%96%B0%E5%A2%9EHTTP%E7%AB%AF%E5%8F%A3

感覺文檔的這個新開HTTP端口的方案可行。
不同的插件運行在不同的進程,給進程設(shè)置特定用戶,這樣應(yīng)該可以。

alafafa

如果插件具備了對上層文件夾的訪問權(quán)限,也就以意味著可以讀取當(dāng)前網(wǎng)站根目錄下config/database.php的權(quán)限,也就意味著可以操作整個數(shù)據(jù)庫,也可以查看其他插件或根目錄app/下的所有源碼,萬一哪個插件的作者動了點小心思,那么就變成了你花錢買了他的插件,他卻拿到了你整個項目的源碼和數(shù)據(jù)庫,所以要是能有辦法在框架上限制讓插件在讀取硬盤的能力上僅限于插件自身根目錄,讀取數(shù)據(jù)庫能力上僅限于以插件標(biāo)識符為前綴的表就好了

  • nitron 2023-03-03

    使用插件和你使用第三方composer庫都是一樣的,安全問題需要自己審查,框架沒辦法做有效的隔離。

年代過于久遠,無法發(fā)表回答
??