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中文网其他相关文章!