所以我正在考虑构建一个CMS,我希望它被设计成插件可以轻松扩展它的功能(我也在研究钩子系统和语言设置)。
这是棘手的部分:我试图为许多站点(例如 mycms.com/your-site)制作一种主机,而不是单独打包的 CMS。
我正在设计具有如下结构的 MySQL 数据库:
pages
- id
- slug
- title
- content
- site // The site id
sites
- id
- path // e.g. your-site
- password // hash
然后我将这样的插件存储在文件结构中:
plugins/
42/ // Site id
hello-world/ // plugin name
hello-world.php
functions.php
css/ // ...
当然,这里有一个严重的安全问题。说一个插件作者的代码 hello-world.php 像这样:
<?php
include '../../../core/config.inc.php';
echo $config['mysql']['password']; // Now they have my server's database password!
?>
我该如何规避这样的事情?我怎样才能控制它,以便 hello-world.php 只能访问目录 hello-world/ 中的文件,而不能访问它上面的文件?本质上,我想禁止插件访问它们自己目录之外的文件。
这一定很简单吧?
谢谢!