검증되지 않은 사용자 입력에 대한 PostgreSQL LIKE 표현식의 리터럴 패턴 일치
PostgreSQL의 LIKE 패턴에 대해 사용자 입력을 일치시킬 때 이스케이프가 필수입니다. 리터럴 일치를 보장하려면 "_" 및 "%"와 같은 특수 패턴 문자를 사용하세요. PostgreSQL에서는 이러한 문자를 백슬래시() 또는 ESCAPE 절로 정의된 사용자 정의 이스케이프 문자를 사용하여 인용해야 합니다.
예를 들어 "rob"을 문자 그대로 일치시키려면 밑줄 또는 문자가 포함된 사용자 입력을 이스케이프해야 합니다. 백분율 기호. 그러나 여기에는 잠재적인 함정이 있습니다. 사용자 입력에 백슬래시도 포함되어 있으면 백슬래시도 이스케이프해야 합니다. 이는 복잡해지고 버그로 이어질 수 있습니다.
서버측 솔루션
이를 우아하게 처리하려면 PostgreSQL의 replacement() 함수를 활용하여 특수 문자를 해당 문자로 바꿀 수 있습니다. 이스케이프 버전. 이 접근 방식에는 여러 가지 장점이 있습니다.
예를 들어 문자 그대로 "rob"을 검색하려면 다음 쿼리를 사용할 수 있습니다.
SELECT * FROM users WHERE name LIKE replace(replace(replace(,'^','^^'),'%','^%'),'_','^_') ||'%' ESCAPE '^'
이 쿼리에서
결론
서버측 대체 및 사용자 정의 이스케이프 문자를 사용하면 확인되지 않은 사용자 입력에 대해 PostgreSQL LIKE 표현식에서 리터럴 패턴 일치를 보장할 수 있습니다. . 이 접근 방식은 강력하고 주입 취약점을 방지하며 코드를 단순화합니다.
위 내용은 검증되지 않은 사용자 입력이 있는 PostgreSQL LIKE 표현식에서 리터럴 패턴 일치를 어떻게 달성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!