> 데이터 베이스 > MySQL 튜토리얼 > 주입을 피하기 위해 Python의 `MySQLdb`에서 SQL 와일드카드를 안전하게 사용하는 방법은 무엇입니까?

주입을 피하기 위해 Python의 `MySQLdb`에서 SQL 와일드카드를 안전하게 사용하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-12-21 03:31:08
원래의
795명이 탐색했습니다.

How to Safely Use SQL Wildcards with Python's `MySQLdb` to Avoid Injection?

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 문이 유효하며 SQL 삽입으로부터 보호됩니다.

위 내용은 주입을 피하기 위해 Python의 `MySQLdb`에서 SQL 와일드카드를 안전하게 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿