AsIs
onveilig is, tenzij je echt weet wat je doet. U kunt het bijvoorbeeld gebruiken voor unittesten.
Het doorgeven van parameters is niet zo onveilig, zolang u uw SQL-query niet vooraf formatteert. Nooit doen:
sql_query = 'SELECT * FROM {}'.format(user_input)
cur.execute(sql_query)
Sinds user_input
zou kunnen zijn ';DROP DATABASE;'
bijvoorbeeld.
Doe in plaats daarvan:
sql_query = 'SELECT * FROM %s'
cur.execute(sql_query, (user_input,))
pyscopg2
zal uw vraag zuiveren. U kunt de parameters in uw code ook vooraf zuiveren met uw eigen logica, als u de invoer van uw gebruiker echt niet vertrouwt.
Per psycopg2
's documentatie
:
Ook zou ik nooit, maar dan ook nooit, mijn gebruikers laten vertellen welke tabel ik moet opvragen. De logica (of routes) van uw app zouden u dat moeten vertellen.
Over AsIs()
, per psycopg2
's documentatie
:
Gebruik het dus niet met gebruikersinvoer.