> 데이터 베이스 > MySQL 튜토리얼 > SQLAlchemy의 `execute()` 함수에서 매개 변수를 어떻게 안전하게 처리할 수 있나요?

SQLAlchemy의 `execute()` 함수에서 매개 변수를 어떻게 안전하게 처리할 수 있나요?

Susan Sarandon
풀어 주다: 2025-01-01 09:02:10
원래의
475명이 탐색했습니다.

How Can I Securely Handle Parameters in SQLAlchemy's `execute()` Function?

SQLAlchemy의 매개변수 처리 실행()

SQLAlchemy의 Connection.execute() 함수를 활용하여 선택한 결과를 맵 배열로 변환할 수 있습니다. 소규모 데이터 세트에 대한 편리한 접근 방식입니다. 그러나 format()을 사용하여 SQL 쿼리에 매개변수를 추가하면 보안 문제가 발생할 수 있습니다.

매개변수 처리 메커니즘을 개선하려면 다음 기술 활용을 고려하세요.

SQLAlchemy.sql.text 사용 () 매개변수화된 SQL 문자열

다음을 사용하여 매개변수화된 SQL 문자열을 생성합니다. SQLAlchemy.sql.text():

sql = text(
    "SELECT users.fullname || ', ' || addresses.email_address AS title "
    "FROM users, addresses "
    "WHERE users.id = addresses.user_id "
    "AND users.name BETWEEN :x AND :y "
    "AND (addresses.email_address LIKE :e1 "
    "OR addresses.email_address LIKE :e2)")
로그인 후 복사

매개변수를 키워드 인수로 지정

매개변수화된 SQL 문자열을 실행하는 동안 매개변수 값을 키워드로 제공하여 실행합니다. () 함수:

conn.execute(sql, {"x": "m", "y": "z", "e1": "%@aol.com", "e2": "%@msn.com"}).fetchall()
로그인 후 복사

사용자 정의에 동적 매개변수 통합 함수

원하는 경우 매개변수 값에 대한 값이라는 사전을 생성하여 매개변수 전달을 지원하도록 이 예에서 사용자 정의 함수인 __sql_to_data()를 수정합니다.

def __sql_to_data(sql, values):
    ...
    conn.execute(sql, values)
로그인 후 복사

다음과 같이 할 수 있습니다. 그런 다음 다음과 같은 매개변수 사전을 사용하여 함수를 호출합니다.

sql = 'SELECT ...'
data = {'user_id': 3}
results = __sql_to_data(sql, data)
로그인 후 복사

이러한 접근 방식을 채택하면 보안을 강화할 수 있습니다. SQLAlchemy의 실행() 함수에서 매개변수 처리의 유연성을 제공합니다.

위 내용은 SQLAlchemy의 `execute()` 함수에서 매개 변수를 어떻게 안전하게 처리할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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