ホームページ > バックエンド開発 > PHPチュートリアル > PDO ステートメントでテーブル名をバインドできますか?

PDO ステートメントでテーブル名をバインドできますか?

Mary-Kate Olsen
リリース: 2024-11-17 12:42:01
オリジナル
813 人が閲覧しました

Can you Bind a Table Name in a PDO Statement?

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート