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中文網其他相關文章!