>데이터 베이스 >MySQL 튜토리얼 >MySQL IN 절에서 Python 목록을 안전하게 사용하는 방법은 무엇입니까?

MySQL IN 절에서 Python 목록을 안전하게 사용하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-18 13:27:21949검색

How to Safely Use a Python List in a MySQL IN Clause?

Python MySQL IN 절에서 사용할 목록 매핑

MySQL 쿼리에서 IN 절의 ID 목록을 사용하려고 할 때 다음이 필수적입니다. 잠재적인 SQL 주입 취약점을 방지하여 작업의 안전을 보장합니다. 목록을 문자열에 매핑하고 이를 쿼리에서 직접 사용하면 취약하므로 더 안전한 접근 방식은 목록을 매개변수로 직접 사용하는 것입니다.

이를 달성하려면 형식 문자열을 활용하여 다음을 수행할 수 있습니다. 목록의 길이에 따라 적절한 수의 자리 표시자(%s)를 생성합니다. 그런 다음 목록 자체가 튜플 형태로 실행() 함수에 전달되므로 수동으로 인용하고 이스케이프할 필요가 없습니다.

format_strings = ','.join(['%s'] * len(list_of_ids))
cursor.execute("DELETE FROM foo.bar WHERE baz IN (%s)" % format_strings,
                tuple(list_of_ids))

데이터(list_of_ids)를 매개변수로 보내면 다음에서 처리됩니다. MySQL의 드라이버를 직접 사용하여 주입 위험을 제거합니다. 이 방법을 사용하면 추가 삭제나 인용 없이 문자열 내의 모든 문자를 보존할 수 있습니다.

위 내용은 MySQL IN 절에서 Python 목록을 안전하게 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.