Die sichere Methode für Benutzereingaben wählen
Eine Pipeline übernimmt einen Produktnamen aus der Nutzerkonfiguration, um eine SQL-Abfrage zu filtern. Deine Kollegin bzw. dein Kollege schlägt zwei Ansätze vor:
Ansatz A verwendet params (Jinja-Rendering):
SQLExecuteQueryOperator(
sql="SELECT * FROM orders WHERE product = '{{ params.product }}'",
params={"product": user_input},
)
Ansatz B verwendet parameters (Binding auf DB-Ebene):
SQLExecuteQueryOperator(
sql="SELECT * FROM orders WHERE product = $product",
parameters={"product": user_input},
)
Welcher Ansatz ist injection-sicher, wenn der Produktname aus nicht vertrauenswürdiger Benutzereingabe stammt?
Diese Übung ist Teil des Kurses
<Kurs>Data-Pipelines mit Airflow aufbauen</Kurs>Interaktive praktische Übung
Verwandle Theorie mit einer unserer interaktiven Übungen in die Praxis
Übung starten