私はプラグインのようなものであるはずのいくつかのプロジェクトに取り組んでおり、私のウェブサイトのコアはそれらに API (ユーザー情報へのアクセスなど) を提供します。しかし今、私は 1 つの問題を解決しています。各プラグインは情報を保存するための独自のデータベース テーブルを持つ必要がありますが、これらのテーブル用のテンプレートは 1 つもないため、プラグインは独自の構造を持つ独自のテーブルを作成する必要があります。ここで私の問題は何ですか?
すべてのプラグインが作成したテーブルにのみアクセスできるようにする必要があります。これらのプラグイン テーブルは、特別な資格情報を持つ別のデータベースになります (そのため、「コア」テーブルにアクセスできません) が、他のプラグインのテーブルへのアクセスを回避するにはどうすればよいですか? 私の考えは次のとおりです。
- 各プラグインには、一意のテーブル プレフィックス (非公開) があります。
- プラグイン用のいくつかのクラスがあり、select、insert などのメソッドがあります。
私の考えを理解するための基本的な例を次に示します。
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 の権限しかありません。アイデアをありがとう。