我正在做一些项目,我的网站的插件和核心应该为它们提供 API(访问用户信息等)。但是现在我要解决一个问题——每个插件都应该有自己的数据库表来存储信息,但是这些表没有一个模板,所以插件必须创建自己的具有自定义结构的表。我的问题是什么?
我需要确保每个插件都只能访问它创建的表。这些插件表将位于具有特殊凭据的单独数据库中(因此它无法访问“核心”表),但是如何避免访问其他插件的表?我的想法如下:
- 每个插件都会有一些唯一的表前缀(非公开)。
- 将有一些插件类,我将在哪里选择,插入等方法。
这是理解我的想法的基本示例:
public function Select($fromTable, $selectWhat, $where) {
$query = "SELECT " . $selectWhat . " FROM {unique_prefix}_" . $fromTable . " where " . $where . ";";
}
这是一个没有任何输入保护的非常简单的例子......我的问题来了 - 如何保护它以避免访问其他插件?假设他们不知道彼此的唯一前缀,但仍然。或者如何避免通过类似的$where
东西1 = 1; evil code here;
?当然,这些插件的帐户将只有 SELECT、INSERT、DELETE 和 UPDATE 的权限。感谢您的想法。