PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie kann ich meinen Python-F-String in meiner Abfrage so reparieren, dass er nicht anfällig für SQL-Injektionen ist?

So bereinigen Sie eine dynamische Abfrage mithilfe einer Python-Schleife beim Abrufen von Daten!

Bitte beachten Sie, dass meine Funktion get_dict_resultset wird verwendet, um eine Verbindung zum dB herzustellen, Daten abzurufen und in einem Python-Wörterbuch zu speichern.

def get_dict_resultset(query, param):
    cur = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
    cur.execute(query, param)
    ans =cur.fetchall()
    dict_result = []
    for row in ans:
        dict_result.append(dict(row))
    return dict_result

Ich habe param hinzugefügt als Argument in der Funktion und cur.execute .

for stock in symbols:
    stock_info[stock] = get_dict_resultset("SELECT 
                                            date, close          
                                            FROM security_price 
                                            WHERE 
                                            security_price.id=%s;", [stock])

So habe ich meinen Code sicher bearbeitet, um meine Benutzereingaben zu bereinigen und meine dB zu schützen