PreparedStatements에서 열 이름을 입력 매개 변수로 사용
Java 데이터베이스 애플리케이션에서 preparedStatement는 SQL 문을 동적으로 실행하는 데 사용됩니다. 그러나 일반적인 질문이 생깁니다. 열 이름을 입력 매개변수로 지정할 수 있습니까? 이 문서에서는 이 문제를 살펴보고 답변을 제공합니다.
배경
PreparedStatement를 사용하면 특정 값을 매개변수로 설정하여 SQL 주입 공격을 방지할 수 있습니다. 단, 기본적으로 컬럼 값만 매개변수로 설정할 수 있습니다.
문제
사용자가 두 테이블(A, B)을 조인하는 쿼리를 생성하려고 합니다. 테이블 A의 X 열과 입력 매개변수 간의 비교를 기반으로 결과를 필터링합니다. 그러나 사용자는 이 매개변수가 테이블 B의 Y 열이 되기를 원합니다.
해결책
Java 데이터베이스 연결 API인 JDBC에서는 다음을 사용할 수 없습니다. preparedstatements의 입력 매개변수로 사용되는 열 이름입니다. 리터럴 값이나 바인드 변수만 매개변수로 지정할 수 있습니다.
따라서 ReadyStatement를 직접 사용하여 원하는 기능을 구현하는 것은 불가능합니다. 대신, SQL 문을 수정하여 SQL 문을 수정하여 준비된 상태를 생성하기 전에 Y 열 값을 리터럴로 포함해야 합니다. 이를 위해서는 SQL 문자열을 수동으로 구성해야 하는데, 이는 SQL 주입 공격의 위험으로 인해 권장되지 않습니다.
대체 솔루션
SQL 주입을 방지하려면 다음을 수행하는 것이 좋습니다. 다음과 같은 대체 접근 방식을 사용합니다.
위 내용은 Java ReadyStatements에서 열 이름을 입력 매개변수로 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!