사용자 입력에 안전한 방법 선택하기
파이프라인이 SQL 쿼리를 필터링하기 위해 사용자 설정에서 제품 이름을 받는다고 가정해 봅시다. 동료가 두 가지 방법을 제안했습니다.
방법 A — params 사용 (Jinja 렌더링):
SQLExecuteQueryOperator(
sql="SELECT * FROM orders WHERE product = '{{ params.product }}'",
params={"product": user_input},
)
방법 B — parameters 사용 (DB 수준 바인딩):
SQLExecuteQueryOperator(
sql="SELECT * FROM orders WHERE product = $product",
parameters={"product": user_input},
)
신뢰할 수 없는 사용자 입력에서 제품 이름이 들어올 때, 인젝션 공격에 안전한 방법은 무엇일까요?
이 연습은 강의의 일부입니다
