Heim  >  Artikel  >  Backend-Entwicklung  >  Können Sie einen Tabellennamen in eine PDO-Anweisung binden?

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

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-17 12:42:01746Durchsuche

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();
    }
}

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!

Stellungnahme:
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