피드로 돌아가기
Python t-strings (PEP 750): A Practical Tutorial With Real Examples
Dev.toDev.to
Security

PEP 750 t-strings 도입을 통한 SQL Injection 구조적 원천 차단

Python t-strings (PEP 750): A Practical Tutorial With Real Examples

Maksim Danilchenko2026년 4월 27일15intermediate

Context

기존 f-string의 즉시 평가 방식은 보간된 값을 단순 문자열로 결합하여 데이터베이스 쿼리 작성 시 SQL Injection 취약점을 유발함. 라이브러리 수준에서 보간 전의 값과 정적 텍스트를 분리하여 제어할 수 있는 인터페이스의 부재로 인한 보안 리스크 발생.

Technical Solution

  • t-string 리터럴 도입을 통해 즉시 문자열을 생성하는 대신 string.templatelib.Template 객체를 반환하는 구조 설계
  • Template 객체 내부에 정적 텍스트 조각(strings)과 보간 값 정보(interpolations)를 분리하여 저장하는 메커니즘 구현
  • Interpolation 객체에 value뿐 아니라 원본 expression, conversion, format_spec 필드를 포함하여 메타데이터 접근성 확보
  • 라이브러리 작성자가 Template 객체를 순회하며 보간 값을 Parameterized Query의 플레이스홀더(?)로 치환하는 렌더링 로직 구축
  • Template 클래스를 str의 하위 클래스로 설계하지 않음으로써 암묵적 형변환에 의한 보안 우회 가능성을 설계 단계에서 제거

1. Python

3.14 환경에서 SQL, HTML, Shell Command 생성 로직에 t-string 적용 검토

2. 단순 f-string 결합 대신 Template 객체를 인자로 받는 전용 헬퍼 함수 구현

3. 런타임 시 template.interpolations를 통해 입력값의 원본 식별자(expression) 기반의 구조화된 로깅 체계 구축

원문 읽기