>백엔드 개발 >PHP 튜토리얼 >PHP PDO 준비된 문이 동적 테이블 및 열 이름을 매개변수로 처리할 수 있습니까?

PHP PDO 준비된 문이 동적 테이블 및 열 이름을 매개변수로 처리할 수 있습니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-29 06:24:30542검색

Can PHP PDO Prepared Statements Handle Dynamic Table and Column Names as Parameters?

PHP PDO 문 매개변수 제한: 테이블 및 열 이름

PDO(PHP Data Objects)에서 준비된 문은 SQL 삽입을 방지하여 향상된 보안을 제공합니다. 공격. 그러나 테이블 또는 열 이름을 준비된 명령문에 매개변수로 동적으로 전달하는 것은 불가능합니다.

Why Limitations Exist

PDO의 준비된 명령문은 모든 사용자가 입력은 SQL 쿼리로 실행되기 전에 유효성이 검사됩니다. 테이블 또는 열 이름을 매개변수로 허용하면 악의적인 사용자가 잠재적으로 쿼리를 조작하고 중요한 데이터에 무단으로 액세스할 수 있으므로 보안 허점이 발생합니다.

대체 솔루션

SQL 쿼리에 테이블 이름을 안전하게 삽입하려면 데이터를 수동으로 필터링하고 정리해야 합니다. 한 가지 접근 방식은 switch() 문을 사용하여 허용된 테이블 이름의 화이트리스트를 생성하는 것입니다.

function buildQuery($get_var) {
    switch ($get_var) {
        case 1:
            $tbl = 'users';
            break;
        default:
            throw new Exception('Invalid table name');
    }

    $sql = "SELECT * FROM $tbl";
}

이 방법을 사용하면 예상 값과 일치하는 사용자 입력만 테이블에서 사용할 수 있도록 보장할 수 있습니다. 질문. 이 접근 방식은 준비된 문의 이점을 유지하면서 잠재적인 보안 취약점을 방지합니다.

위 내용은 PHP PDO 준비된 문이 동적 테이블 및 열 이름을 매개변수로 처리할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.