Python MySQL의 IN 절 내에 목록 중첩
P粉781235689
P粉781235689 2023-08-22 17:04:59
0
2
489
<p>목록을 문자열로 매핑하는 방법을 알고 있습니다.</p> <pre class="brush:php;toolbar:false;">foostring = ",".join( map(str, list_of_ids) )</pre> <p>다음을 사용하여 해당 문자열을 IN 절에 넣을 수 있다는 것을 알고 있습니다. </p> <pre class="brush:php;toolbar:false;">cursor.execute("DELETE FROM foo.bar WHERE baz IN ('%s')" % (foostring))</pre> <p>MySQL 데이터베이스에서 동일한 기능을 안전한 방법(SQL 주입 방지)으로 구현해야 합니다. 위의 예에서는 foostring이 실행을 위한 매개변수로 전달되지 않았기 때문에 취약합니다. 또한 MySQL 라이브러리 외부에서 인용 및 이스케이프 작업을 수행해야 합니다. </p> <p> (관련 SO 질문이 있지만 거기에 나열된 답변은 MySQL 데이터베이스에서 작동하지 않거나 SQL 삽입 공격에 취약합니다.) </p>
P粉781235689
P粉781235689

모든 응답(2)
P粉434996845

오래된 질문이지만 혹시 제가 찾는 정보를 혹시 다른 분들도 찾고 계실까 싶어 답글을 남겨봅니다

매개변수가 많거나 명명된 매개변수를 사용하려는 경우 허용되는 답변이 혼란스러워집니다

몇 번 시도한 끝에

으아악

테스트를 거쳐 python2.7pymysql==0.7.11

에 합격했습니다.
P粉212114661

직접 사용list_of_ids:

으아악

이렇게 하면 인용을 피하고 다양한 SQL 주입 문제를 피할 수 있습니다.

데이터(list_of_ids)는 쿼리 텍스트가 아닌 매개변수로 mysql의 드라이버에 직접 전달되므로 삽입 문제가 없습니다. 문자를 제거하거나 인용하지 않고도 문자열의 모든 문자를 유지할 수 있습니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿