sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur kan jag fixa min Python F-sträng i min fråga så att den inte är sårbar för SQL-injektioner?

Så här sanerar du en dynamisk fråga med en pytonslinga när du hämtar data!

Observera att min funktion get_dict_resultset används för att ansluta till dB, hämta data och lagra den i en python-ordbok.

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

Jag lade till param som ett argument i funktionen och cur.execute .

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

Det är så jag redigerade min kod på ett säkert sätt för att rensa mina användarinmatningar och skydda min dB




  1. MySQL-verktyg som söker efter en sträng i alla fält, tabeller och databaser

  2. Infoga data och ställ in främmande nycklar med Postgres

  3. Rails-MySQL-fel - oinitierad konstant MysqlCompat::MysqlRes

  4. Ladda text i textområdet via ajax-samtal