PHP PDO: テーブル名をバインドすることは可能ですか?
質問:
テーブル名を PDO にバインドできますかステートメント?
答え:
いいえ。テーブル名をバインドすることはできません。機密データへの不正アクセスを防ぐために、許容可能なテーブル名のホワイトリストを実装することが重要です。
安全かつセキュアなアプローチ:
テーブル名をバインドする代わりに、次の使用を検討してください。クラスまたはアプリケーション ロジック内で事前に定義された承認されたテーブル名のセット。このアプローチにより、承認されたテーブルのみがアクセス可能になり、アプリケーションのセキュリティが強化されます。
たとえば、テーブルのメタデータにアクセスするためのインターフェイスを提供する抽象テーブル クラスを作成できます。
abstract class AbstractTable { private $table; private $db; public function __construct(PDO $pdo) { $this->db = $pdo; } public function describe() { return $this->db->query("DESCRIBE `$this->table`")->fetchAll(); } }
次に、抽象クラスを拡張し、承認されたテーブル名を指定する特定のテーブル クラスを作成します。
class SomeTable extends AbstractTable { private $table = 'some_table'; }
このアプローチにより、安全に取得できます指定されたテーブルの列メタデータ:
$pdo = new PDO(...); $table = new SomeTable($pdo); $fields = $table->describe();
以上がPDO ステートメントでテーブル名をバインドできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。