PHP PDO : Est-il possible de lier un nom de table ?
Question :
Un nom de table peut-il être lié dans une instruction PDO ?
Réponse :
Non. La liaison d'un nom de table n'est pas possible. Il est crucial de mettre en œuvre une liste blanche de noms de tables acceptables pour empêcher tout accès non autorisé aux données sensibles.
Approche sûre et sécurisée :
Au lieu de lier les noms de tables, envisagez d'utiliser un ensemble prédéfini de noms de tables autorisés dans la logique de votre classe ou de votre application. Cette approche garantit que seules les tables approuvées sont accessibles, améliorant ainsi la sécurité de votre application.
Par exemple, vous pouvez créer une classe de table abstraite qui fournit une interface pour accéder aux métadonnées des tables :
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(); } }
Ensuite, créez une classe de table spécifique qui étend la classe abstraite et spécifie le nom de table autorisé :
class SomeTable extends AbstractTable { private $table = 'some_table'; }
Avec cette approche, vous pouvez récupérer en toute sécurité les métadonnées de colonne pour la table spécifiée :
$pdo = new PDO(...); $table = new SomeTable($pdo); $fields = $table->describe();
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!