PHP PDO: Ist es möglich, einen Tabellennamen zu binden?
Frage:
Kann ein Tabellenname in einem PDO gebunden werden? Aussage?
Antwort:
Nein. Das Binden eines Tabellennamens ist nicht möglich. Es ist wichtig, eine Whitelist akzeptabler Tabellennamen zu implementieren, um unbefugten Zugriff auf sensible Daten zu verhindern.
Sicherer Ansatz:
Anstelle der Bindung von Tabellennamen sollten Sie die Verwendung in Betracht ziehen ein vordefinierter Satz autorisierter Tabellennamen innerhalb Ihrer Klassen- oder Anwendungslogik. Dieser Ansatz stellt sicher, dass nur genehmigte Tabellen zugänglich sind, was die Sicherheit Ihrer Anwendung erhöht.
Sie können beispielsweise eine abstrakte Tabellenklasse erstellen, die eine Schnittstelle für den Zugriff auf Tabellenmetadaten bereitstellt:
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(); } }
Erstellen Sie dann eine bestimmte Tabellenklasse, die die abstrakte Klasse erweitert und den autorisierten Tabellennamen angibt:
class SomeTable extends AbstractTable { private $table = 'some_table'; }
Mit diesem Ansatz können Sie Spaltenmetadaten für die angegebene Klasse sicher abrufen Tabelle:
$pdo = new PDO(...); $table = new SomeTable($pdo); $fields = $table->describe();
Das obige ist der detaillierte Inhalt vonKönnen Sie einen Tabellennamen in eine PDO-Anweisung binden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!