> 백엔드 개발 > PHP 튜토리얼 > PDO 문에 테이블 이름을 바인딩할 수 있나요?

PDO 문에 테이블 이름을 바인딩할 수 있나요?

Mary-Kate Olsen
풀어 주다: 2024-11-17 12:42:01
원래의
823명이 탐색했습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿