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