Python SQLite3 SQL 주입 취약점
SQL 주입 취약점으로 인해 공격자는 데이터베이스에 대해 악의적인 SQL 쿼리를 실행할 수 있습니다. 이러한 취약점은 적절한 유효성 검사 및 이스케이프 처리 없이 사용자 입력이 SQL 쿼리에 직접 통합될 때 발생할 수 있습니다.
코드 취약점
제공된 코드 조각은 다음으로 인해 SQL 주입에 취약합니다. .format을 사용하여 SQL 쿼리를 동적으로 구성합니다. 예를 들어 다음 명령문을 고려해보세요.
cursor.execute("insert into user(username, password)" " values('{0}', '{1}')".format(username, password))
사용자 이름이나 비밀번호에 악성 문자(예: 작은따옴표)가 포함되어 있으면 SQL 쿼리의 일부로 해석될 수 있습니다. 이로 인해 공격자는 테이블 삭제 또는 악성 데이터 삽입과 같은 임의의 SQL 명령을 실행할 수 있습니다.
수정
이 취약점을 해결하려면 매개 변수화된 문자열 보간 대신 쿼리. 매개 변수가 있는 쿼리는 자리 표시자(?)를 사용하여 사용자 입력을 나타내고 데이터베이스 엔진이 이러한 값의 이스케이프를 처리할 수 있도록 하여 SQL 삽입을 방지합니다. 예:
cursor.execute("insert into user(username, password) values(?, ?)", (username, password))
매개변수화된 쿼리를 사용하여 데이터베이스 엔진은 입력의 모든 특수 문자가 적절하게 이스케이프되었는지 확인하여 SQL 삽입 공격을 방지합니다. SQL 쿼리에서 사용자 입력이 사용될 때마다 매개변수화된 쿼리를 사용하는 것이 필수적입니다.
위 내용은 매개변수화된 쿼리가 Python의 SQLite3에서 SQL 주입을 어떻게 방지할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!