Začněte nyníZačněte zdarma

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

Zobrazit kurz

Interaktivní praktické cvičení

Proměňte teorii v praxi s jedním z našich interaktivních cvičení

Začít cvičení