Python 문자열 형식에서 SQL 와일드카드 및 LIKE 연산자 사용
SQL 와일드카드 및 LIKE 연산자를 Python 문자열 형식에 삽입하는 것은 어려울 수 있습니다. 이 문서에서는 MySQLdb를 사용하여 MySQL 쿼리를 실행하려고 할 때 발생하는 일반적인 오류에 대한 솔루션을 제공합니다.
MySQLdb의 오류
3번과 4번 시도에서 MySQLdb에서 " 형식 문자열에 대한 인수가 충분하지 않습니다." 이는 % 기호가 Python의 문자열 형식 지정 연산자에 의해 형식 지정자로 해석되기 때문에 발생합니다.
SQL 주입에 대한 취약성
표시된 처음 4개의 시도는 다음에 취약합니다. SQL 주입 공격. 쿼리 변수와 같은 사용자 입력은 악성 SQL이 실행되는 것을 방지하기 위해 삭제되거나 이스케이프되어야 합니다.
올바른 접근 방식
권장되는 접근 방식은 자리 표시자를 사용하는 것입니다. 문자열 형식 대신. 예는 다음과 같습니다.
curs.execute("""SELECT tag.userId, count(user.id) as totalRows FROM user INNER JOIN tag ON user.id = tag.userId WHERE user.username LIKE %s""", ('%' + query + '%',))
execute()에 두 개의 인수가 전달됩니다.
이 접근 방식은 SQL 문이 유효하며 SQL 삽입으로부터 보호됩니다.
위 내용은 주입을 피하기 위해 Python의 `MySQLdb`에서 SQL 와일드카드를 안전하게 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!