Können Sie einen Tabellennamen in eine PDO-Anweisung binden?

Mary-Kate Olsen
Freigeben: 2024-11-17 12:42:01
Original
745 Leute haben es durchsucht

Can you Bind a Table Name in a PDO Statement?

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();
    }
}
Nach dem Login kopieren

Erstellen Sie dann eine bestimmte Tabellenklasse, die die abstrakte Klasse erweitert und den autorisierten Tabellennamen angibt:

class SomeTable extends AbstractTable {
    private $table = 'some_table';
}
Nach dem Login kopieren

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();
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage