Jak bezpečně pracovat s uživatelským vstupem
Pipeline přijímá název produktu z uživatelské konfigurace, aby mohl filtrovat SQL dotaz. Tvůj kolega navrhuje dva přístupy:
Přístup A používá params (Jinja rendering):
SQLExecuteQueryOperator(
sql="SELECT * FROM orders WHERE product = '{{ params.product }}'",
params={"product": user_input},
)
Přístup B používá parameters (vazba na úrovni databáze):
SQLExecuteQueryOperator(
sql="SELECT * FROM orders WHERE product = $product",
parameters={"product": user_input},
)
Který přístup je bezpečný vůči SQL injection, pokud název produktu pochází z nedůvěryhodného uživatelského vstupu?
Toto cvičení je součástí kurzu
Tvorba datových pipeline s Airflow
Interaktivní praktické cvičení
Proměňte teorii v praxi s jedním z našich interaktivních cvičení
Začít cvičení